Initialize AMRIT AI Agentic Framework with SDLC skills and release - #1
Initialize AMRIT AI Agentic Framework with SDLC skills and release #1Somsubhra-Nandi wants to merge 31 commits into
Conversation
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…dd evidence-driven Confluence search refinement,add BRD requirement traceability and confidence fields,preserve read-only research and human-review workflow, include independently installable skill documentation and examples Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…the product manager receives a brd and creates jira issues,epics and stories Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…cal-design skill Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…s,currently deepwiki search for the repository intelligence for atchitectural knowledge is not implemented Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…AMRIT repositories Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
📝 WalkthroughWalkthroughThis change adds four AMRIT lifecycle skills, project bridges, reference material, examples, packaging and validation scripts, distribution documentation, tests, MCP configuration, and GitHub Actions automation. The skills cover BRD creation, product backlog creation, technical design, and codebase questions. ChangesAMRIT skills framework
Estimated code review effort: 5 (Critical) | ~90 minutes 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 11
🧹 Nitpick comments (2)
scripts/validate-skills.py (1)
119-137: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueNarrow the blind
except Exceptionto the known packaging error surface.Catching bare
Exceptionfolds genuinePackagingErrorfailures and unexpected programming errors (e.g. from a future refactor ofpackage_skill's interface) into the same generic message, discarding the traceback either way. Narrowing to the documented error types keeps unexpected bugs visible instead of silently reported as "packaging failed."♻️ Proposed fix
try: package = packaging.package_skill( repo_root, skill.name, output_directory ) - except Exception as error: + except (packaging.PackagingError, OSError) as error: errors.append(f"Packaging '{skill.name}' failed: {error}") continue🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/validate-skills.py` around lines 119 - 137, Update validate_packaging to catch only the documented packaging failure exception types raised by packaging.package_skill, rather than using a broad except Exception. Preserve the existing error message and continue behavior for those expected failures, while allowing unexpected programming errors to propagate with their traceback.Source: Linters/SAST tools
scripts/package-skills.py (1)
13-22: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick winConsider excluding common secret-bearing filenames from packages.
The exclusion list covers OS/editor/temp/cache artifacts but not files like
.env,*.pem,*.key, or similar credential patterns. Since these ZIPs are published as public GitHub Release assets, an accidentally-included secret file would leak publicly with no guard rail. Cheap defense-in-depth given the public distribution channel.🔒 Example addition
EXCLUDED_FILE_NAMES = {".DS_Store", "Desktop.ini", "Thumbs.db"} -EXCLUDED_FILE_SUFFIXES = {".bak", ".pyc", ".pyo", ".temp", ".tmp", ".zip"} +EXCLUDED_FILE_SUFFIXES = {".bak", ".pyc", ".pyo", ".temp", ".tmp", ".zip", ".env", ".pem", ".key"}🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/package-skills.py` around lines 13 - 22, Expand the packaging exclusions in EXCLUDED_FILE_NAMES and/or EXCLUDED_FILE_SUFFIXES to cover common secret-bearing files, including .env files and certificate/private-key patterns such as .pem and .key. Ensure package creation cannot include these credential artifacts while preserving the existing exclusions.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/release-skills.yml:
- Line 27: Pin every listed GitHub Action to its immutable commit SHA instead of
a mutable version tag: actions/checkout and actions/setup-python in
.github/workflows/release-skills.yml at lines 27 and 45, and actions/checkout,
actions/setup-python, and actions/upload-artifact in
.github/workflows/validate-skills.yml at lines 20, 23, and 50. Preserve each
action’s current version while replacing the tag reference with the
corresponding full commit SHA.
In `@docs/installation.md`:
- Around line 38-56: Update the release links in the “Claude Desktop” section of
docs/installation.md to use ../../../releases/latest and
../../../releases/latest/download/<skill>.zip, correcting the nesting depth
while preserving the existing package targets.
In `@README.md`:
- Around line 128-131: Update the README prerequisite descriptions for
create-brd and create-product-backlog to say each skill requires an Atlassian
MCP connection with the specified Confluence, page-read, and Jira read
capabilities, preserving the existing read-only and optional publication
details.
In `@skills/create-brd/README.md`:
- Line 47: Update the create-brd download link in the README to use the
repository’s canonical release-asset URL with the
/releases/latest/download/create-brd.zip path, replacing the repository-relative
link while preserving the displayed filename.
In `@skills/create-brd/SKILL.md`:
- Around line 19-20: Update the next_skill metadata in the skill definition to
use the canonical downstream skill name create-product-backlog instead of
stage-02-create-jira-backlog, while preserving the existing primary_output
value.
In `@skills/create-product-backlog/examples/sample-defect-output.md`:
- Around line 50-66: Update the Parent instructions for TASK-01 and TASK-02 to
require both approval of the specific backlog version and a separate explicit
request authorizing Jira creation/publication and task linking before any Jira
write occurs; do not use “after approval” alone.
In `@skills/create-product-backlog/examples/sample-feature-output.md`:
- Around line 51-54: Update the second acceptance criterion to apply to every
valid submitted email, including registered, unregistered, and ineligible
addresses. Define that the externally observable response remains
indistinguishable across all three cases, without conditioning the requirement
on the request being accepted.
In `@skills/create-product-backlog/README.md`:
- Around line 48-49: Replace the relative release-download links in
skills/create-product-backlog/README.md (lines 48-49) and
skills/create-technical-design/README.md (lines 56-57) with absolute GitHub
release asset URLs using the repository’s releases/latest/download endpoint for
both release files.
In `@skills/create-technical-design/examples/sample-db-change.md`:
- Line 21: Update the attempted_at definition in the prose and corresponding
DBML schema so both explicitly preserve offset-aware timestamp semantics. If the
database type remains engine-dependent, mark the physical type and timezone
behavior as pending confirmation; otherwise annotate the DBML with the required
timezone semantics.
In `@skills/create-technical-design/examples/sample-design-output.md`:
- Around line 151-157: Update the follow-up timing rule in the sample design to
classify the platform comparison time-zone convention as Unknown or Assumed
rather than confirmed, and explicitly mark the 30-calendar-day boundary behavior
as pending evidence confirmation. Keep the existing rescheduling and version
constraints unchanged.
In `@tests/test_skill_distribution.py`:
- Around line 179-187: Update test_rejects_mapping_to_wrong_source and the
related validation coverage to assert against the bridge’s actual Markdown link
target, not merely a path mentioned in prose. Parse the link from the generated
bridge content, validate that target against the canonical skill, and add a
regression fixture where the bridge links to the wrong skill while mentioning
the expected path as decoy text.
---
Nitpick comments:
In `@scripts/package-skills.py`:
- Around line 13-22: Expand the packaging exclusions in EXCLUDED_FILE_NAMES
and/or EXCLUDED_FILE_SUFFIXES to cover common secret-bearing files, including
.env files and certificate/private-key patterns such as .pem and .key. Ensure
package creation cannot include these credential artifacts while preserving the
existing exclusions.
In `@scripts/validate-skills.py`:
- Around line 119-137: Update validate_packaging to catch only the documented
packaging failure exception types raised by packaging.package_skill, rather than
using a broad except Exception. Preserve the existing error message and continue
behavior for those expected failures, while allowing unexpected programming
errors to propagate with their traceback.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: afbe22b4-5c46-46df-8490-a12378b99486
📒 Files selected for processing (52)
.claude/skills/create-brd/SKILL.md.claude/skills/create-product-backlog/SKILL.md.claude/skills/create-technical-design/SKILL.md.github/workflows/release-skills.yml.github/workflows/validate-skills.yml.gitignoreLICENSEREADME.mddocs/installation.mddocs/lifecycle-mapping.mdscripts/package-skills.pyscripts/validate-skills.pyskills/create-brd/README.mdskills/create-brd/SKILL.mdskills/create-brd/examples/sample-input.mdskills/create-brd/examples/sample-output.mdskills/create-brd/references/amrit-context.mdskills/create-brd/references/brd-template.mdskills/create-brd/references/brd-writing-guidelines.mdskills/create-brd/references/confluence-research-guidelines.mdskills/create-brd/references/information-checklist.mdskills/create-product-backlog/README.mdskills/create-product-backlog/SKILL.mdskills/create-product-backlog/examples/sample-defect-input.mdskills/create-product-backlog/examples/sample-defect-output.mdskills/create-product-backlog/examples/sample-feature-input.mdskills/create-product-backlog/examples/sample-feature-output.mdskills/create-product-backlog/references/acceptance-criteria-guidelines.mdskills/create-product-backlog/references/backlog-structure.mdskills/create-product-backlog/references/defect-intake-guidelines.mdskills/create-product-backlog/references/information-checklist.mdskills/create-product-backlog/references/invest-guidelines.mdskills/create-product-backlog/references/jira-publishing-guidelines.mdskills/create-product-backlog/references/prioritization-guidelines.mdskills/create-technical-design/README.mdskills/create-technical-design/SKILL.mdskills/create-technical-design/examples/sample-db-change.mdskills/create-technical-design/examples/sample-deepwiki-available.mdskills/create-technical-design/examples/sample-deepwiki-unavailable.mdskills/create-technical-design/examples/sample-design-output.mdskills/create-technical-design/examples/sample-no-db-change.mdskills/create-technical-design/examples/sample-story-input.mdskills/create-technical-design/references/api-design-guidelines.mdskills/create-technical-design/references/architecture-review-guidelines.mdskills/create-technical-design/references/db-design-guidelines.mdskills/create-technical-design/references/deepwiki-research-guidelines.mdskills/create-technical-design/references/hld-guidelines.mdskills/create-technical-design/references/impact-analysis-guidelines.mdskills/create-technical-design/references/lld-guidelines.mdskills/create-technical-design/references/repository-catalog.mdskills/create-technical-design/references/sequence-diagram-guidelines.mdtests/test_skill_distribution.py
|
|
||
| steps: | ||
| - name: Check out tagged commit | ||
| uses: actions/checkout@v6 |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
# Expect no output after all workflow actions are SHA-pinned.
rg -n '^\s*uses:\s+[^@]+@v[0-9]+' .github/workflowsRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 558
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '--- release-skills.yml relevant content ---\n'
awk 'NR>=1 && NR<=70' .github/workflows/release-skills.yml | cat -n
printf '\n--- validate-skills.yml relevant content ---\n'
awk 'NR>=1 && NR<=70' .github/workflows/validate-skills.yml | cat -n
printf '\n--- all uses references in workflows ---\n'
rg -n '^\s*uses:\s+' .github/workflowsRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 261
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- release-skills.yml relevant content ---'
awk 'NR>=1 && NR<=90' .github/workflows/release-skills.yml | cat -n
printf '%s\n' ''
printf '%s\n' '--- validate-skills.yml relevant / full workflow actions ---'
awk 'NR>=1 && NR<=90' .github/workflows/validate-skills.yml | cat -n
printf '%s\n' ''
printf '%s\n' '--- workflow permissions and SHA-pin status ---'
rg -n 'permissions:|contents:|pull-requests:|permissions|\buses:\s+[^@]+@[0-9a-fA-F]{40}\b|`@v`[0-9]+' .github/workflows || true
printf '%s\n' ''
printf '%s\n' '--- all uses references in workflows ---'
rg -n '^\s*uses:\s+' .github/workflowsRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 5865
Pin GitHub Actions to immutable commit SHAs.
The release workflow has contents: write, so mutable @v6 tags for GitHub-released actions create a supply-chain risk if the upstream tags are retargeted.
.github/workflows/release-skills.yml#L27-L27: pinactions/checkout..github/workflows/release-skills.yml#L45-L45: pinactions/setup-python..github/workflows/validate-skills.yml#L20-L20: pinactions/checkout..github/workflows/validate-skills.yml#L23-L23: pinactions/setup-python..github/workflows/validate-skills.yml#L50-L50: pinactions/upload-artifact.
📍 Affects 2 files
.github/workflows/release-skills.yml#L27-L27(this comment).github/workflows/release-skills.yml#L45-L45.github/workflows/validate-skills.yml#L20-L20.github/workflows/validate-skills.yml#L23-L23.github/workflows/validate-skills.yml#L50-L50
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.github/workflows/release-skills.yml at line 27, Pin every listed GitHub
Action to its immutable commit SHA instead of a mutable version tag:
actions/checkout and actions/setup-python in
.github/workflows/release-skills.yml at lines 27 and 45, and actions/checkout,
actions/setup-python, and actions/upload-artifact in
.github/workflows/validate-skills.yml at lines 20, 23, and 50. Preserve each
action’s current version while replacing the tag reference with the
corresponding full commit SHA.
| ## Claude Desktop | ||
|
|
||
| [Download the latest skill packages](../../releases/latest) | ||
|
|
||
| Install one package: | ||
|
|
||
| 1. Open the repository's latest GitHub Release. | ||
| 2. Download the ZIP for the desired skill. | ||
| 3. Open Claude Desktop. | ||
| 4. Open the skill interface and upload the ZIP. | ||
| 5. Confirm that the skill appears and its required MCP connections are | ||
| available. | ||
|
|
||
| Direct release assets: | ||
|
|
||
| - [Create BRD](../../releases/latest/download/create-brd.zip) | ||
| - [Create Product Backlog](../../releases/latest/download/create-product-backlog.zip) | ||
| - [Create Technical Design](../../releases/latest/download/create-technical-design.zip) | ||
|
|
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -eu
echo "== file location and relevant lines =="
if [ -f docs/installation.md ]; then
nl -ba docs/installation.md | sed -n '1,80p'
else
echo "docs/installation.md not found"
fi
echo
echo "== docs/installation link depth references =="
python3 - <<'PY'
from pathlib import Path
p = Path("docs/installation.md")
text = p.read_text()
for i, line in enumerate(text.splitlines(), 1):
if "../../releases" in line or "../../../releases" in line:
print(f"{p}:{i}: {line.strip()}")
PY
echo
echo "== repository branch context =="
git rev-parse --abbrev-ref HEAD 2>/dev/null || true
git ls-files | sed -n '1,80p'
echo
echo "== read-only URL path resolution probe for markdown relative links =="
python3 - <<'PY'
# Simulate GitHub markdown resolution as described: paths after links resolve
# relative to the document URL path when fetched from the /blob/<branch>/ path.
file_path = "docs/installation.md"
base = f"/owner/repo/blob/main/{file_path}"
for rel in ["../../releases/latest", "../../releases/latest/download/create-brd.zip", "../../../releases/latest"]:
# naive relative-resolution demonstration, excluding special segments not in these links
parts = base.split("/")
for segment in rel.split("/"):
if segment == "":
continue
if segment == "..":
if len(parts) > 1:
parts.pop()
else:
parts.append(segment)
print(rel, "=>", "/".join(parts))
PY
echo
echo "== any existing release link conventions in repo =="
rg -n 'releases/latest|releases/latest/download|Download the latest skill packages|releases/download' -S . || trueRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 4990
🌐 Web query:
GitHub Markdown relative URLs resolve links docs blob branch README relative references
💡 Result:
GitHub automatically handles relative links in Markdown files, allowing you to link to other files, directories, or images within your repository without needing absolute URLs [1][2]. This ensures that your documentation remains functional both when viewed on GitHub and when cloned locally [1][3]. Key behaviors for relative links include: Relative to Current File: By default, links are relative to the current file [1][2]. For example, a link to docs/CONTRIBUTING.md in a README file located at the repository root will resolve correctly [1][2]. You can use standard relative path operands such as ./ (current directory) and ../ (parent directory) [1][2]. Relative to Root: Links starting with a forward slash / are treated as relative to the repository root [1][2]. This is useful for consistently referencing files regardless of where the linking file is located in the directory structure [4]. Automatic Transformation: GitHub automatically transforms these relative links based on your current branch or context, ensuring they point to the correct blob path on the repository [1][2][3]. This mechanism is specific to GitHub's web interface and is not part of the standard Markdown or CommonMark specification [5]. Best Practices: - Use relative links instead of absolute URLs to ensure your documentation remains portable for users who clone the repository [1][2]. - For images, use relative links to ensure they display correctly in rendered Markdown files [1][6]. - Ensure link text is kept on a single line; multi-line link definitions may not render as expected [1][2]. When viewing a repository, GitHub translates these relative paths into the necessary URLs (e.g., user/repo/blob/branch/file.md) to resolve the destination correctly [4][3]. Note that behavior may vary slightly depending on whether you are viewing the rendered README on the repository landing page versus an individual file view, though GitHub generally manages these redirections automatically [7].
Citations:
- 1: https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax
- 2: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-readmes
- 3: https://github.blog/news-insights/product-news/relative-links-in-markup-files/
- 4: https://stackoverflow.com/questions/7653483/github-relative-link-in-markdown-file
- 5: https://talk.commonmark.org/t/what-is-commonmarks-semantic-definition-for-relative-links/4023
- 6: https://docs.github.com/en/enterprise-server@3.0/articles/basic-writing-and-formatting-syntax
- 7: Markdown relative links broken github/markup#1719
Adjust the release links to account for docs/installation.md’s nesting depth.
From docs/, ../../releases/latest still goes one directory too shallow and resolves under the rendered /blob/<branch>/ path. Use ../../../releases/latest for the package download link and ../../../releases/latest/download/<skill>.zip for the direct asset links.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/installation.md` around lines 38 - 56, Update the release links in the
“Claude Desktop” section of docs/installation.md to use ../../../releases/latest
and ../../../releases/latest/download/<skill>.zip, correcting the nesting depth
while preserving the existing package targets.
| - `create-brd` requires connected Atlassian MCP Confluence search and page-read | ||
| capabilities. Confluence is read-only by default. | ||
| - `create-product-backlog` requires connected Atlassian MCP Confluence and Jira | ||
| read capabilities. Jira publication is optional and requires approval of the |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Clarify the MCP connection prerequisite.
“Requires connected” is ambiguous. Use “requires an Atlassian MCP connection with … capabilities” for both skills.
Proposed fix
-- `create-brd` requires connected Atlassian MCP Confluence search and page-read
+- `create-brd` requires an Atlassian MCP connection with Confluence search and page-read
capabilities. Confluence is read-only by default.
-- `create-product-backlog` requires connected Atlassian MCP Confluence and Jira
+- `create-product-backlog` requires an Atlassian MCP connection with Confluence and Jira
read capabilities.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - `create-brd` requires connected Atlassian MCP Confluence search and page-read | |
| capabilities. Confluence is read-only by default. | |
| - `create-product-backlog` requires connected Atlassian MCP Confluence and Jira | |
| read capabilities. Jira publication is optional and requires approval of the | |
| - `create-brd` requires an Atlassian MCP connection with Confluence search and page-read | |
| capabilities. Confluence is read-only by default. | |
| - `create-product-backlog` requires an Atlassian MCP connection with Confluence and Jira | |
| read capabilities. Jira publication is optional and requires approval of the |
🧰 Tools
🪛 LanguageTool
[style] ~128-~128: The double modal “requires connected” is nonstandard (only accepted in certain dialects). Consider “to be connected”.
Context: ...s, or secrets. - create-brd requires connected Atlassian MCP Confluence search and pag...
(NEEDS_FIXED)
[style] ~130-~130: The double modal “requires connected” is nonstandard (only accepted in certain dialects). Consider “to be connected”.
Context: ...lt. - create-product-backlog requires connected Atlassian MCP Confluence and Jira rea...
(NEEDS_FIXED)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 128 - 131, Update the README prerequisite
descriptions for create-brd and create-product-backlog to say each skill
requires an Atlassian MCP connection with the specified Confluence, page-read,
and Jira read capabilities, preserving the existing read-only and optional
publication details.
Source: Linters/SAST tools
| ## Use and distribution | ||
|
|
||
| Invoke `/create-brd` in Claude Code from the repository root. Claude Desktop | ||
| users can download [create-brd.zip](../../releases/latest/download/create-brd.zip). |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Use a valid release-asset URL.
../../releases/latest/download/create-brd.zip resolves as a repository-relative path from skills/create-brd/README.md, not as a GitHub release asset URL. The advertised Claude Desktop download link will therefore fail. Use the repository’s canonical /releases/latest/download/create-brd.zip URL.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/create-brd/README.md` at line 47, Update the create-brd download link
in the README to use the repository’s canonical release-asset URL with the
/releases/latest/download/create-brd.zip path, replacing the repository-relative
link while preserving the displayed filename.
| primary_output: AMRIT BRD in Markdown — Draft — Pending Human Review | ||
| next_skill: stage-02-create-jira-backlog |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Align next_skill with the canonical skill name.
next_skill is set to stage-02-create-jira-backlog, but the repository’s downstream skill is create-product-backlog (/create-product-backlog). Consumers following this metadata may fail to resolve the next stage.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/create-brd/SKILL.md` around lines 19 - 20, Update the next_skill
metadata in the skill definition to use the canonical downstream skill name
create-product-backlog instead of stage-02-create-jira-backlog, while preserving
the existing primary_output value.
| Acceptance criteria: | ||
|
|
||
| 1. Given an eligible active account has the submitted registered email, when a reset is requested, then the system sends a single-use reset link to that email. | ||
| 2. Given any email is submitted, when the request is accepted, then the response does not disclose whether the email is registered. |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Make the anti-enumeration acceptance criterion cover all valid email inputs.
Conditioning the requirement on “when the request is accepted” leaves unregistered or ineligible addresses outside the testable guarantee, potentially allowing status disclosure through rejection behavior. Specify the externally indistinguishable response for registered, unregistered, and ineligible valid addresses.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/create-product-backlog/examples/sample-feature-output.md` around lines
51 - 54, Update the second acceptance criterion to apply to every valid
submitted email, including registered, unregistered, and ineligible addresses.
Define that the externally observable response remains indistinguishable across
all three cases, without conditioning the requirement on the request being
accepted.
| | `referral_id` | Required foreign key | Keep referral as aggregate owner | Additive | | ||
| | `attempt_number` | Required positive integer | Stable ordering within referral | Additive | | ||
| | `outcome_code` | Required bounded code | Avoid free-text outcome semantics | Additive | | ||
| | `attempted_at` | Required offset-aware timestamp | Preserve event time | Additive | |
There was a problem hiding this comment.
🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
Keep the timestamp contract consistent between prose and DBML.
Line [21] requires an offset-aware attempted_at, but the DBML at Line [48] only specifies timestamp. Mark the physical type/timezone semantics as pending database-engine confirmation or annotate the DBML explicitly so implementers cannot silently lose timezone information.
Also applies to: 43-50
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/create-technical-design/examples/sample-db-change.md` at line 21,
Update the attempted_at definition in the prose and corresponding DBML schema so
both explicitly preserve offset-aware timestamp semantics. If the database type
remains engine-dependent, mark the physical type and timezone behavior as
pending confirmation; otherwise annotate the DBML with the required timezone
semantics.
| - A non-null follow-up must be later than consultation completion. | ||
| - A non-null follow-up must be no later than 30 calendar days after completion, using the confirmed platform time-zone convention. | ||
| - Completed or cancelled cases reject rescheduling. | ||
| - Clearing is allowed only for a pending follow-up and an authorized actor. | ||
| - The request version must match the current case version. | ||
|
|
||
| **Open evidence gap:** The platform's authoritative comparison time zone was not included in the sample evidence and materially affects boundary behavior. |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Do not classify the timezone convention as confirmed before it is evidenced.
Line [152] says the 30-day rule uses a confirmed platform timezone, but Line [157] says that timezone is an open evidence gap. Classify the convention as Unknown/Assumed and phrase the rule as pending confirmation; this boundary directly affects acceptance behavior.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@skills/create-technical-design/examples/sample-design-output.md` around lines
151 - 157, Update the follow-up timing rule in the sample design to classify the
platform comparison time-zone convention as Unknown or Assumed rather than
confirmed, and explicitly mark the 30-calendar-day boundary behavior as pending
evidence confirmation. Keep the existing rescheduling and version constraints
unchanged.
|
|
||
| The repository supports two primary audiences: | ||
|
|
||
| - **Claude Code developers** use the committed project skills immediately |
There was a problem hiding this comment.
Not sure Claude, we can extend to others.
There was a problem hiding this comment.
Sure. Will fix it.
| Create and push a tag following the `v*` convention: | ||
|
|
||
| ```bash | ||
| git tag v0.1.0 |
There was a problem hiding this comment.
These are not required. For now keep it simple with main branch updates. When updates, rerun the actions to create zip files.
There was a problem hiding this comment.
Just to confirm the intended distribution: after changes are merged into main, should the GitHub Action generate the skill ZIPs as downloadable workflow artifacts, with users downloading the skill-packages artifact from the Actions run?
|
|
||
| ## MCP prerequisites | ||
|
|
||
| MCP connections and credentials are configured outside this repository. |
There was a problem hiding this comment.
Not really, provide a .mcp.json file.
Check what is the ideal configuration for other IDEs like Cursor/Antigravity.
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
removing version tags and including agents/
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
adding zips to gitignore
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/validate-skills.yml:
- Around line 49-74: Replace the three direct artifact uploads in
.github/workflows/validate-skills.yml (lines 49-74) with one archived upload
named skill-packages that includes all dist/*.zip files, while preserving the
existing event condition, missing-file failure behavior, and retention period.
The README.md references at lines 51-70 and 126-128 and docs/installation.md
references at lines 50-68 and 115-119 require no direct changes because they
document the expected skill-packages artifact.
In `@README.md`:
- Around line 3-6: Update the README repository description to remove the claim
that project discovery bridges are generated, and state that maintainers add and
commit those bridge files while only installable packages are generated from the
source directories.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: b8779a6c-f00b-402d-bbdc-4c7216ab6600
📒 Files selected for processing (12)
.agents/skills/create-brd/SKILL.md.agents/skills/create-product-backlog/SKILL.md.agents/skills/create-technical-design/SKILL.md.github/workflows/validate-skills.ymlREADME.mddocs/installation.mdscripts/package-skills.pyscripts/validate-skills.pyskills/create-brd/README.mdskills/create-product-backlog/README.mdskills/create-technical-design/README.mdtests/test_skill_distribution.py
🚧 Files skipped from review as they are similar to previous changes (4)
- skills/create-product-backlog/README.md
- skills/create-technical-design/README.md
- skills/create-brd/README.md
- scripts/package-skills.py
| This repository contains reusable agent skills for the AMRIT software | ||
| development lifecycle. The source of truth is [`skills/`](skills/); project | ||
| discovery bridges and installable packages are generated from those same | ||
| source directories. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Do not state that project bridges are generated.
The repository requires maintainers to add and commit bridge files. Validation checks bridge files, but it does not generate them. State that only installable packages are generated.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@README.md` around lines 3 - 6, Update the README repository description to
remove the claim that project discovery bridges are generated, and state that
maintainers add and commit those bridge files while only installable packages
are generated from the source directories.
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…de and cursor Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.agents/mcp_config.json:
- Around line 8-42: Remove the environment-specific MCP server configurations
from .agents/mcp_config.json lines 8-42, .cursor/mcp.json lines 8-42, and
.mcp.json lines 8-42. Document the required server names and user-managed setup
steps in the appropriate installation documentation, keeping endpoints and
credentials outside the repository.
- Around line 6-41: Pin every mcp-remote invocation to the approved reviewed
version instead of using the unversioned package. Apply this change to all MCP
client entries in .agents/mcp_config.json, .cursor/mcp.json, and .mcp.json at
lines 6-41, preserving their existing commands, arguments, and headers.
In `@skills/create-brd/README.md`:
- Around line 47-51: Replace the temporary Actions artifact installation
instructions with direct links to the latest GitHub Release assets: update
skills/create-brd/README.md lines 47-51 to use
/releases/latest/download/create-brd.zip,
skills/create-product-backlog/README.md lines 48-53 to use
/releases/latest/download/create-product-backlog.zip, and
skills/create-technical-design/README.md lines 56-61 to use
/releases/latest/download/create-technical-design.zip. Keep Actions artifacts
documented only for temporary CI downloads.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 0470fd10-df8c-48e0-8c33-9bb4fbb58b67
📒 Files selected for processing (8)
.agents/mcp_config.json.cursor/mcp.json.mcp.jsonREADME.mddocs/installation.mdskills/create-brd/README.mdskills/create-product-backlog/README.mdskills/create-technical-design/README.md
🚧 Files skipped from review as they are similar to previous changes (2)
- README.md
- docs/installation.md
| "-y", | ||
| "mcp-remote", | ||
| "https://amrittools.piramalswasthya.org/atlassian/mcp", | ||
| "--header", | ||
| "X-Atlassian-Jira-Url: https://support.piramalfoundation.org/jira", | ||
| "--header", | ||
| "X-Atlassian-Jira-Personal-Token: <put your token here>", | ||
| "--header", | ||
| "X-Atlassian-Confluence-Url: https://pmp.piramalswasthya.org/confluence", | ||
| "--header", | ||
| "X-Atlassian-Confluence-Personal-Token: <put your token here>" | ||
| ] | ||
| }, | ||
| "deepwiki": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", | ||
| "https://mcp.deepwiki.com/mcp" | ||
| ] | ||
| }, | ||
| "mcp-openproject": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", | ||
| "https://amrittools.piramalswasthya.org/openproject/mcp", | ||
| "--header", | ||
| "Authorization: Bearer <put your token here>" | ||
| ] | ||
| }, | ||
| "graphify-agent": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== files =="
git ls-files | rg '(^|/)\.mcp.*json$|(^|/)\.cursor/mcp\.json$|(^|/)\.agents/mcp_config\.json$' || true
echo "== relevant contents =="
for f in .agents/mcp_config.json .cursor/mcp.json .mcp.json; do
if [ -f "$f" ]; then
echo "--- $f ---"
cat -n "$f" | sed -n '1,120p'
fi
done
echo "== npx mcp-remote usages and package references =="
rg -n '"(command|url|package|script|pkg)"|[""'][^"'"'"']npx\.?cmd[^"'"'"']*mcp-remote|mcp-remote' . --glob '!node_modules' --glob '!dist' --glob '!build' || true
echo "== package info from npm registry (read-only metadata checks) =="
python3 - <<'PY'
import json, subprocess
for pkg in ["mcp-remote"]:
try:
out = subprocess.run(["npm", "view", pkg, "name", "version", "bin", "repository", "homepage", "--json"], text=True, timeout=20, capture_output=True)
print(pkg)
if out.returncode == 0:
data=json.loads(out.stdout)
print(json.dumps(data, indent=2, sort_keys=True))
else:
print("npm_exit", out.returncode)
print(out.stderr)
except Exception as e:
print("error", pkg, type(e).__name__, e)
PYRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 1953
🏁 Script executed:
#!/usr/bin/env bash
set -euo pipefail
echo "== exact npx command constructions in MCP config files =="
python3 - <<'PY'
import json
files = [".agents/mcp_config.json", ".cursor/mcp.json", ".mcp.json"]
needles = ["mcp-remote"]
for path in files:
print(f"--- {path} ---")
try:
data=json.load(open(path))
except Exception as e:
print("parse_error", e)
continue
if "mcpServers" in data:
for name, surl in data["mcpServers"].items():
cfg=surl.get("command") or surl.get("url") or surl.get("pkg") or ""
args=surl.get("args") or surl.get("args") or []
tokens = [cfg] + [str(a) for a in args] if isinstance(args, list) else []
if any(n in " ".join(tokens) for n in needles):
print(name, {"command_or_url": cfg, "args": args})
PYRepository: PSMRI/AMRIT-AI-Agentic-Framework
Length of output: 1953
🌐 Web query:
mcp-remote npm package -y --package latest latest package semantics mcp-remote docs
💡 Result:
The mcp-remote package is a command-line tool that acts as a proxy for the Model Context Protocol (MCP), enabling local, stdio-only MCP clients (such as Claude Desktop, Cursor, and Windsurf) to connect to remote, authenticated MCP servers [1][2][3]. Package Status and Fork: The original package, geelen/mcp-remote, is currently unmaintained [4]. As of May 2026, the project is actively maintained under the @automattic scope [5][4]. Users are advised to use the @automattic/mcp-remote package for the latest updates and security patches [5][4]. Core Functionality: - Stdio-to-Remote Proxying: It bridges local stdio-based communication with remote MCP servers running over HTTP or Server-Sent Events (SSE) [3][6]. - OAuth 2.0 Bridge: It automatically manages OAuth 2.0 flows (including PKCE) on behalf of the MCP client, handling browser-based user consent and token storage [3][6]. - Transport Strategies: It supports configurable transport strategies (http-first, sse-first, http-only, sse-only) to control how it connects to the remote server [7][8]. - Multi-instance Coordination: It includes mechanisms to manage authentication state across multiple instances to avoid redundant login flows [6]. Usage: The package is typically executed via npx as part of an MCP client's server configuration [1]. Example configuration: { "mcpServers": { "remote-example": { "command": "npx", "args": [ "@automattic/mcp-remote", "https://remote.mcp.server/sse" ] } } } Security Note: A critical security vulnerability, CVE-2025-6514 (OS command injection), was disclosed in June 2025 affecting versions prior to 0.1.16 [3]. Users should ensure they are using updated versions (v0.1.16 or later) and exercise caution regarding untrusted URLs [3]. Comprehensive documentation, including command-line references and API guides, is available via community resources like DeepWiki [2][7][9].
Citations:
- 1: https://www.npmjs.com/package/mcp-remote
- 2: https://deepwiki.com/geelen/mcp-remote/2-getting-started
- 3: https://mcpowered.com/mcp-remote/
- 4: https://github.com/Automattic/mcp-remote/releases/tag/v0.1.47
- 5: https://github.com/Automattic/mcp-remote/releases/tag/v0.1.48
- 6: https://deepwiki.com/geelen/mcp-remote
- 7: https://deepwiki.com/geelen/mcp-remote/2.3-command-line-reference
- 8: https://deepwiki.com/geelen/mcp-remote/3.4-transport-strategies
- 9: https://deepwiki.com/geelen/mcp-remote/4-api-reference
Pin mcp-remote to an approved version.
Each MCP client entry runs bare npx -y mcp-remote ..., which installs and executes the package at runtime without a lockfile. Replace bare mcp-remote with a reviewed @<version> package in .agents/mcp_config.json, .cursor/mcp.json, and .mcp.json.
📍 Affects 3 files
.agents/mcp_config.json#L6-L41(this comment).cursor/mcp.json#L6-L41.mcp.json#L6-L41
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/mcp_config.json around lines 6 - 41, Pin every mcp-remote invocation
to the approved reviewed version instead of using the unversioned package. Apply
this change to all MCP client entries in .agents/mcp_config.json,
.cursor/mcp.json, and .mcp.json at lines 6-41, preserving their existing
commands, arguments, and headers.
| "https://amrittools.piramalswasthya.org/atlassian/mcp", | ||
| "--header", | ||
| "X-Atlassian-Jira-Url: https://support.piramalfoundation.org/jira", | ||
| "--header", | ||
| "X-Atlassian-Jira-Personal-Token: <put your token here>", | ||
| "--header", | ||
| "X-Atlassian-Confluence-Url: https://pmp.piramalswasthya.org/confluence", | ||
| "--header", | ||
| "X-Atlassian-Confluence-Personal-Token: <put your token here>" | ||
| ] | ||
| }, | ||
| "deepwiki": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", | ||
| "https://mcp.deepwiki.com/mcp" | ||
| ] | ||
| }, | ||
| "mcp-openproject": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", | ||
| "https://amrittools.piramalswasthya.org/openproject/mcp", | ||
| "--header", | ||
| "Authorization: Bearer <put your token here>" | ||
| ] | ||
| }, | ||
| "graphify-agent": { | ||
| "command": "npx.cmd", | ||
| "args": [ | ||
| "-y", | ||
| "mcp-remote", | ||
| "https://amrittools.piramalswasthya.org/amrit/mcp" |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
Keep environment-specific MCP endpoints outside the repository.
These files commit internal service URLs and select one AMRIT environment for every user. This conflicts with docs/installation.md lines 123-137, which requires MCP connections and credentials to be configured outside this repository.
.agents/mcp_config.json#L8-L42: remove the environment-specific server configuration from the tracked project bridge..cursor/mcp.json#L8-L42: remove the environment-specific server configuration from the tracked project bridge..mcp.json#L8-L42: remove the environment-specific server configuration from the tracked project bridge.
Document the required server names and user-managed configuration steps instead.
📍 Affects 3 files
.agents/mcp_config.json#L8-L42(this comment).cursor/mcp.json#L8-L42.mcp.json#L8-L42
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In @.agents/mcp_config.json around lines 8 - 42, Remove the environment-specific
MCP server configurations from .agents/mcp_config.json lines 8-42,
.cursor/mcp.json lines 8-42, and .mcp.json lines 8-42. Document the required
server names and user-managed setup steps in the appropriate installation
documentation, keeping endpoints and credentials outside the repository.
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
…ira and openproject Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
Signed-off-by: Somsubhra Nandi <nruma325@gmail.com>
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
README.md (1)
166-168: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick winAlign package installation documentation with GitHub Releases.
The PR objective states that
v*tags publish each ZIP as a GitHub Release asset. The changed documentation still says releases are unused and directs users to Actions artifacts. Use the stable/releases/latest/download/<skill>.zipasset path for installation. Keep Actions artifacts only for temporary CI downloads, and document the actual tag and branch behavior.
README.md#L166-L168: Replace the statement that releases and version tags are unused with the GitHub Release distribution model.README.md#L140-L141: Pointanswer-codebase-questions.zipto the release asset instead of the Actions artifact flow.README.md#L198-L198: Describe release publication and distinguish it from temporary workflow artifacts.docs/installation.md#L108-L109: Update the new package installation path to the GitHub Release asset.docs/installation.md#L160-L160: Document the release workflow instead of artifact-only publication.skills/answer-codebase-questions/README.md#L43-L47: Replace the Actions-run download instructions with the latest Release asset URL.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@README.md` around lines 166 - 168, Update the package installation documentation to use the stable GitHub Release asset path `/releases/latest/download/<skill>.zip`: in README.md lines 140-141 and docs/installation.md lines 108-109, replace Actions artifact downloads; in skills/answer-codebase-questions/README.md lines 43-47, replace run-specific download instructions. In README.md lines 166-168 and 198, document that v* tags publish each ZIP as a GitHub Release asset, state the applicable tag and branch behavior, and distinguish stable release downloads from temporary Actions artifacts.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@README.md`:
- Around line 166-168: Update the package installation documentation to use the
stable GitHub Release asset path `/releases/latest/download/<skill>.zip`: in
README.md lines 140-141 and docs/installation.md lines 108-109, replace Actions
artifact downloads; in skills/answer-codebase-questions/README.md lines 43-47,
replace run-specific download instructions. In README.md lines 166-168 and 198,
document that v* tags publish each ZIP as a GitHub Release asset, state the
applicable tag and branch behavior, and distinguish stable release downloads
from temporary Actions artifacts.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 9a28811f-0172-4f6a-a7c4-a7618cc13004
📒 Files selected for processing (12)
.agents/skills/answer-codebase-questions/SKILL.md.claude/skills/answer-codebase-questions/SKILL.md.github/workflows/validate-skills.yml.gitignoreREADME.mddocs/installation.mddocs/lifecycle-mapping.mdskills/answer-codebase-questions/README.mdskills/answer-codebase-questions/SKILL.mdskills/create-brd/README.mdskills/create-product-backlog/README.mdskills/create-technical-design/README.md
🚧 Files skipped from review as they are similar to previous changes (3)
- .github/workflows/validate-skills.yml
- .gitignore
- skills/create-technical-design/README.md
Description
JIRA ID: N/A
This PR initializes the AMRIT AI Agentic Framework repository and adds the first set of reusable SDLC skills.
Since the target
mainbranch is currently empty, this PR establishes the initial repository structure, documentation, validation, packaging, and release workflow.Included in this PR
create-brdcreate-product-backlogcreate-technical-design.claude/skills/skills/as the canonical sourcemainbranch validationMotivation
The goal is to provide a maintainable and reusable framework for SDLC workflows that can be used through Claude Code, Claude Desktop, and extended later for other agentic development tools.
Generated skill packages are no longer stored in Git. They are built automatically and published as GitHub Release assets.
Type of Change
Additional Information
The implementation was tested locally using:
Results:
The GitHub Actions workflows were also verified in a temporary private repository:
The generated ZIP packages were also verified for Claude Desktop-compatible structure.
Summary by CodeRabbit
New Features
Documentation
Chores
Tests