From d253e048b9cdf2cf3e7a3d244c717c3f00e24b97 Mon Sep 17 00:00:00 2001 From: mithun50 Date: Tue, 15 Jul 2025 17:32:39 +0530 Subject: [PATCH 1/5] Added PyPI v3 setup and readme updates --- MANIFEST.in | 7 ++++ README.md | 20 ++++++++---- SuperClaude/Commands/__init__.py | 0 SuperClaude/Core/__init__.py | 0 SuperClaude/Hooks/__init__.py | 0 SuperClaude/__init__.py | 0 SuperClaude.py => SuperClaude/__main__.py | 22 +++++++------ config/__init__.py | 0 profiles/__init__.py | 0 pyproject.toml | 4 +++ setup.py | 40 +++++++++++++++++++++++ setup/operations/__init__.py | 2 +- setup/operations/backup.py | 12 +++---- setup/operations/install.py | 16 ++++----- setup/operations/uninstall.py | 10 +++--- setup/operations/update.py | 10 +++--- 16 files changed, 102 insertions(+), 41 deletions(-) create mode 100644 MANIFEST.in create mode 100644 SuperClaude/Commands/__init__.py create mode 100644 SuperClaude/Core/__init__.py create mode 100644 SuperClaude/Hooks/__init__.py create mode 100644 SuperClaude/__init__.py rename SuperClaude.py => SuperClaude/__main__.py (94%) mode change 100755 => 100644 create mode 100644 config/__init__.py create mode 100644 profiles/__init__.py create mode 100644 pyproject.toml create mode 100644 setup.py diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..3b0dbb0 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,7 @@ +include VERSION +include README.md +include LICENSE +recursive-include setup * +recursive-include SuperClaude * +recursive-include config * +recursive-include profiles * diff --git a/README.md b/README.md index 48f478b..30f06a1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # SuperClaude v3 🚀 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![PyPI version](https://badge.fury.io/py/SuperClaude.svg)](https://pypi.org/project/SuperClaude/) + [![Version](https://img.shields.io/badge/version-3.0.0-blue.svg)](https://github.com/NomenAK/SuperClaude) [![GitHub issues](https://img.shields.io/github/issues/NomenAK/SuperClaude)](https://github.com/NomenAK/SuperClaude/issues) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/NomenAK/SuperClaude/blob/master/CONTRIBUTING.md) @@ -91,16 +93,22 @@ This is because v3 has a different structure and the old files can cause conflic ### Quick Start ```bash +pip install SuperClaude +#Install with python-pip +``` +### Install via Git +```bash # Clone the repo git clone https://github.com/NomenAK/SuperClaude.git cd SuperClaude # Install with our unified CLI -python3 SuperClaude.py install --quick +pip install . # That's it! 🎉 ``` + **Missing Python?** ```bash # Linux (Ubuntu/Debian) @@ -116,16 +124,16 @@ brew install python3 ### Other Installation Options ```bash # Minimal install (just core framework) -python3 SuperClaude.py install --minimal +python3 SuperClaude install --minimal # Developer setup (everything) -python3 SuperClaude.py install --profile developer +python3 SuperClaude install --profile developer # Interactive selection -python3 SuperClaude.py install +python3 SuperClaude install # See what's available -python3 SuperClaude.py install --list-components +python3 SuperClaude install --list-components ``` The installer handles everything: framework files, MCP servers, and Claude Code configuration. @@ -186,7 +194,7 @@ The codebase is pretty straightforward Python + documentation files. ``` SuperClaude/ -├── SuperClaude.py # Main installer CLI +├── setup.py # pypi setup file ├── SuperClaude/ # Framework files │ ├── Core/ # Behavior documentation (COMMANDS.md, FLAGS.md, etc.) │ ├── Commands/ # 16 slash command definitions diff --git a/SuperClaude/Commands/__init__.py b/SuperClaude/Commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SuperClaude/Core/__init__.py b/SuperClaude/Core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SuperClaude/Hooks/__init__.py b/SuperClaude/Hooks/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SuperClaude/__init__.py b/SuperClaude/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/SuperClaude.py b/SuperClaude/__main__.py old mode 100755 new mode 100644 similarity index 94% rename from SuperClaude.py rename to SuperClaude/__main__.py index 45d32bc..485009f --- a/SuperClaude.py +++ b/SuperClaude/__main__.py @@ -4,11 +4,11 @@ SuperClaude Framework Management Hub Unified entry point for all SuperClaude operations Usage: - SuperClaude.py install [options] - SuperClaude.py update [options] - SuperClaude.py uninstall [options] - SuperClaude.py backup [options] - SuperClaude.py --help + SuperClaude install [options] + SuperClaude update [options] + SuperClaude uninstall [options] + SuperClaude backup [options] + SuperClaude --help """ import sys @@ -19,7 +19,8 @@ from pathlib import Path from typing import Dict, Callable # Add the 'setup' directory to the Python import path -setup_dir = Path(__file__).parent / "setup" +from pkg_resources import resource_filename +setup_dir = resource_filename('setup', '') sys.path.insert(0, str(setup_dir)) # Try to import utilities from the setup package @@ -77,9 +78,9 @@ def create_parser(): description="SuperClaude Framework Management Hub - Unified CLI", epilog=""" Examples: - SuperClaude.py install --dry-run - SuperClaude.py update --verbose - SuperClaude.py backup --create + SuperClaude install --dry-run + SuperClaude update --verbose + SuperClaude backup --create """, formatter_class=argparse.RawDescriptionHelpFormatter, parents=[global_parser] @@ -113,7 +114,7 @@ def setup_global_environment(args: argparse.Namespace): # Log startup context logger = get_logger() if logger: - logger.debug(f"SuperClaude.py called with operation: {getattr(args, 'operation', 'None')}") + logger.debug(f"SuperClaude called with operation: {getattr(args, 'operation', 'None')}") logger.debug(f"Arguments: {vars(args)}") @@ -239,3 +240,4 @@ def main() -> int: if __name__ == "__main__": sys.exit(main()) + diff --git a/config/__init__.py b/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/profiles/__init__.py b/profiles/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..3292c83 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,4 @@ +[build-system] +requires = ["setuptools>=61.0"] +build-backend = "setuptools.build_meta" + diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..109872d --- /dev/null +++ b/setup.py @@ -0,0 +1,40 @@ +import setuptools + +with open("README.md", "r", encoding="utf-8") as fh: + long_description = fh.read() + +with open("VERSION", "r") as f: + version = f.read().strip() + +setuptools.setup( + name="SuperClaude", + version=version, + author="Mithun Gowda B, NomenAK", + author_email="contact@superclaude.dev", + description="SuperClaude Framework Management Hub", + long_description=long_description, + long_description_content_type="text/markdown", + url="https://github.com/NomenAK/SuperClaude", + packages=setuptools.find_packages(), + include_package_data=True, + install_requires=["setuptools"], + entry_points={ + "console_scripts": [ + "SuperClaude=SuperClaude.__main__:main", + ], + }, + python_requires=">=3.6", + project_urls={ + "GitHub": "https://github.com/NomenAK/SuperClaude", + "Mithun Gowda B": "https://github.com/mithun50", + "NomenAK": "https://github.com/NomenAK", + "Bug Tracker": "https://github.com/NomenAK/SuperClaude/issues", + }, + classifiers=[ + "Programming Language :: Python :: 3", + "Operating System :: OS Independent", + "License :: OSI Approved :: MIT License", + "Development Status :: 4 - Beta", + "Intended Audience :: Developers", + ], +) diff --git a/setup/operations/__init__.py b/setup/operations/__init__.py index 3356d58..589f3e0 100644 --- a/setup/operations/__init__.py +++ b/setup/operations/__init__.py @@ -2,7 +2,7 @@ SuperClaude Operations Module This module contains all SuperClaude management operations that can be -executed through the unified CLI hub (SuperClaude.py). +executed through the unified CLI hub (SuperClaude). Each operation module should implement: - register_parser(subparsers): Register CLI arguments for the operation diff --git a/setup/operations/backup.py b/setup/operations/backup.py index df35397..5230e92 100644 --- a/setup/operations/backup.py +++ b/setup/operations/backup.py @@ -40,12 +40,12 @@ def register_parser(subparsers, global_parser=None) -> argparse.ArgumentParser: description="Create, list, restore, and manage SuperClaude installation backups", epilog=""" Examples: - SuperClaude.py backup --create # Create new backup - SuperClaude.py backup --list --verbose # List available backups (verbose) - SuperClaude.py backup --restore # Interactive restore - SuperClaude.py backup --restore backup.tar.gz # Restore specific backup - SuperClaude.py backup --info backup.tar.gz # Show backup information - SuperClaude.py backup --cleanup --force # Clean up old backups (forced) + SuperClaude backup --create # Create new backup + SuperClaude backup --list --verbose # List available backups (verbose) + SuperClaude backup --restore # Interactive restore + SuperClaude backup --restore backup.tar.gz # Restore specific backup + SuperClaude backup --info backup.tar.gz # Show backup information + SuperClaude backup --cleanup --force # Clean up old backups (forced) """, formatter_class=argparse.RawDescriptionHelpFormatter, parents=parents diff --git a/setup/operations/install.py b/setup/operations/install.py index 51493f6..621e133 100644 --- a/setup/operations/install.py +++ b/setup/operations/install.py @@ -39,11 +39,11 @@ def register_parser(subparsers, global_parser=None) -> argparse.ArgumentParser: description="Install SuperClaude Framework with various options and profiles", epilog=""" Examples: - SuperClaude.py install # Interactive installation - SuperClaude.py install --quick --dry-run # Quick installation (dry-run) - SuperClaude.py install --profile developer # Developer profile - SuperClaude.py install --components core mcp # Specific components - SuperClaude.py install --verbose --force # Verbose with force mode + SuperClaude install # Interactive installation + SuperClaude install --quick --dry-run # Quick installation (dry-run) + SuperClaude install --profile developer # Developer profile + SuperClaude install --components core mcp # Specific components + SuperClaude install --verbose --force # Verbose with force mode """, formatter_class=argparse.RawDescriptionHelpFormatter, parents=parents @@ -121,7 +121,7 @@ def validate_system_requirements(validator: Validator, component_names: List[str # Provide additional guidance print(f"\n{Colors.CYAN}💡 Installation Help:{Colors.RESET}") - print(" Run 'SuperClaude.py install --diagnose' for detailed system diagnostics") + print(" Run 'SuperClaude install --diagnose' for detailed system diagnostics") print(" and step-by-step installation instructions.") return False @@ -321,12 +321,12 @@ def run_system_diagnostics(validator: Validator) -> None: print(f"\n{Colors.BLUE}Next steps:{Colors.RESET}") if all_passed: - print(" 1. Run 'SuperClaude.py install' to proceed with installation") + print(" 1. Run 'SuperClaude install' to proceed with installation") print(" 2. Choose your preferred installation mode (quick, minimal, or custom)") else: print(" 1. Install missing dependencies using the commands above") print(" 2. Restart your terminal after installing tools") - print(" 3. Run 'SuperClaude.py install --diagnose' again to verify") + print(" 3. Run 'SuperClaude install --diagnose' again to verify") def perform_installation(components: List[str], args: argparse.Namespace) -> bool: diff --git a/setup/operations/uninstall.py b/setup/operations/uninstall.py index b80d3ad..1417c91 100644 --- a/setup/operations/uninstall.py +++ b/setup/operations/uninstall.py @@ -38,10 +38,10 @@ def register_parser(subparsers, global_parser=None) -> argparse.ArgumentParser: description="Uninstall SuperClaude Framework components", epilog=""" Examples: - SuperClaude.py uninstall # Interactive uninstall - SuperClaude.py uninstall --components core # Remove specific components - SuperClaude.py uninstall --complete --force # Complete removal (forced) - SuperClaude.py uninstall --keep-backups # Keep backup files + SuperClaude uninstall # Interactive uninstall + SuperClaude uninstall --components core # Remove specific components + SuperClaude uninstall --complete --force # Complete removal (forced) + SuperClaude uninstall --keep-backups # Keep backup files """, formatter_class=argparse.RawDescriptionHelpFormatter, parents=parents @@ -484,7 +484,7 @@ def run(args: argparse.Namespace) -> int: print(f"\n{Colors.CYAN}Uninstall complete:{Colors.RESET}") print(f"SuperClaude has been removed from {args.install_dir}") if not args.complete: - print(f"You can reinstall anytime using 'SuperClaude.py install'") + print(f"You can reinstall anytime using 'SuperClaude install'") return 0 else: diff --git a/setup/operations/update.py b/setup/operations/update.py index 34df792..a8a68ca 100644 --- a/setup/operations/update.py +++ b/setup/operations/update.py @@ -40,10 +40,10 @@ def register_parser(subparsers, global_parser=None) -> argparse.ArgumentParser: description="Update SuperClaude Framework components to latest versions", epilog=""" Examples: - SuperClaude.py update # Interactive update - SuperClaude.py update --check --verbose # Check for updates (verbose) - SuperClaude.py update --components core mcp # Update specific components - SuperClaude.py update --backup --force # Create backup before update (forced) + SuperClaude update # Interactive update + SuperClaude update --check --verbose # Check for updates (verbose) + SuperClaude update --components core mcp # Update specific components + SuperClaude update --backup --force # Create backup before update (forced) """, formatter_class=argparse.RawDescriptionHelpFormatter, parents=parents @@ -354,7 +354,7 @@ def run(args: argparse.Namespace) -> int: # Check if SuperClaude is installed if not check_installation_exists(args.install_dir): logger.error(f"SuperClaude installation not found in {args.install_dir}") - logger.info("Use 'SuperClaude.py install' to install SuperClaude first") + logger.info("Use 'SuperClaude install' to install SuperClaude first") return 1 # Create component registry From 96a395486dd2c2805016b13a6723613f9a0a1bee Mon Sep 17 00:00:00 2001 From: Mithun Gowda B Date: Tue, 15 Jul 2025 17:59:01 +0530 Subject: [PATCH 2/5] Update setup.py Signed-off-by: Mithun Gowda B --- setup.py | 65 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/setup.py b/setup.py index 109872d..5647ceb 100644 --- a/setup.py +++ b/setup.py @@ -1,29 +1,71 @@ import setuptools +import sys +import logging -with open("README.md", "r", encoding="utf-8") as fh: - long_description = fh.read() +# Setup logging +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) -with open("VERSION", "r") as f: - version = f.read().strip() +def get_version(): + """Get version from VERSION file with proper error handling.""" + try: + with open("VERSION", "r") as f: + return f.read().strip() + except FileNotFoundError: + logger.warning("VERSION file not found, using fallback version") + return "3.0.0" + except Exception as e: + logger.error(f"Error reading VERSION file: {e}") + return "3.0.0" +def get_long_description(): + """Get long description from README with error handling.""" + try: + with open("README.md", "r", encoding="utf-8") as fh: + return fh.read() + except FileNotFoundError: + logger.warning("README.md not found") + return "SuperClaude Framework Management Hub" + except Exception as e: + logger.error(f"Error reading README.md: {e}") + return "SuperClaude Framework Management Hub" + +def get_install_requires(): + """Get install requirements with proper dependency management.""" + base_requires = ["setuptools>=45.0.0"] + + # Add Python version-specific dependencies + if sys.version_info < (3, 8): + base_requires.append("importlib-metadata>=1.0.0") + + # Add other dependencies your project needs + # base_requires.extend([ + # "requests>=2.25.0", + # "click>=7.0", + # # etc. + # ]) + + return base_requires + +# Main setup configuration setuptools.setup( name="SuperClaude", - version=version, + version=get_version(), author="Mithun Gowda B, NomenAK", author_email="contact@superclaude.dev", description="SuperClaude Framework Management Hub", - long_description=long_description, + long_description=get_long_description(), long_description_content_type="text/markdown", url="https://github.com/NomenAK/SuperClaude", packages=setuptools.find_packages(), include_package_data=True, - install_requires=["setuptools"], + install_requires=get_install_requires(), entry_points={ "console_scripts": [ "SuperClaude=SuperClaude.__main__:main", ], }, - python_requires=">=3.6", + python_requires=">=3.8", project_urls={ "GitHub": "https://github.com/NomenAK/SuperClaude", "Mithun Gowda B": "https://github.com/mithun50", @@ -32,9 +74,14 @@ setuptools.setup( }, classifiers=[ "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", "Operating System :: OS Independent", "License :: OSI Approved :: MIT License", "Development Status :: 4 - Beta", "Intended Audience :: Developers", ], -) + ) From 2abc98770a924b0d2785a080d69daec091f018e3 Mon Sep 17 00:00:00 2001 From: NomenAK <39598727+NomenAK@users.noreply.github.com> Date: Tue, 15 Jul 2025 16:46:23 +0200 Subject: [PATCH 3/5] Delete .github/workflows directory Signed-off-by: NomenAK <39598727+NomenAK@users.noreply.github.com> --- .github/workflows/claude-code-review.yml | 78 ------------------------ .github/workflows/claude.yml | 64 ------------------- 2 files changed, 142 deletions(-) delete mode 100644 .github/workflows/claude-code-review.yml delete mode 100644 .github/workflows/claude.yml diff --git a/.github/workflows/claude-code-review.yml b/.github/workflows/claude-code-review.yml deleted file mode 100644 index 5bf8ce5..0000000 --- a/.github/workflows/claude-code-review.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: Claude Code Review - -on: - pull_request: - types: [opened, synchronize] - # Optional: Only run on specific file changes - # paths: - # - "src/**/*.ts" - # - "src/**/*.tsx" - # - "src/**/*.js" - # - "src/**/*.jsx" - -jobs: - claude-review: - # Optional: Filter by PR author - # if: | - # github.event.pull_request.user.login == 'external-contributor' || - # github.event.pull_request.user.login == 'new-developer' || - # github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' - - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: read - issues: read - id-token: write - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Run Claude Code Review - id: claude-review - uses: anthropics/claude-code-action@beta - with: - claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - - # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4) - # model: "claude-opus-4-20250514" - - # Direct prompt for automated review (no @claude mention needed) - direct_prompt: | - Please review this pull request and provide feedback on: - - Code quality and best practices - - Potential bugs or issues - - Performance considerations - - Security concerns - - Test coverage - - Be constructive and helpful in your feedback. - - # Optional: Use sticky comments to make Claude reuse the same comment on subsequent pushes to the same PR - # use_sticky_comment: true - - # Optional: Customize review based on file types - # direct_prompt: | - # Review this PR focusing on: - # - For TypeScript files: Type safety and proper interface usage - # - For API endpoints: Security, input validation, and error handling - # - For React components: Performance, accessibility, and best practices - # - For tests: Coverage, edge cases, and test quality - - # Optional: Different prompts for different authors - # direct_prompt: | - # ${{ github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' && - # 'Welcome! Please review this PR from a first-time contributor. Be encouraging and provide detailed explanations for any suggestions.' || - # 'Please provide a thorough code review focusing on our coding standards and best practices.' }} - - # Optional: Add specific tools for running tests or linting - # allowed_tools: "Bash(npm run test),Bash(npm run lint),Bash(npm run typecheck)" - - # Optional: Skip review for certain conditions - # if: | - # !contains(github.event.pull_request.title, '[skip-review]') && - # !contains(github.event.pull_request.title, '[WIP]') - diff --git a/.github/workflows/claude.yml b/.github/workflows/claude.yml deleted file mode 100644 index 64a3e5b..0000000 --- a/.github/workflows/claude.yml +++ /dev/null @@ -1,64 +0,0 @@ -name: Claude Code - -on: - issue_comment: - types: [created] - pull_request_review_comment: - types: [created] - issues: - types: [opened, assigned] - pull_request_review: - types: [submitted] - -jobs: - claude: - if: | - (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) || - (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) || - (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) || - (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude'))) - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: read - issues: read - id-token: write - actions: read # Required for Claude to read CI results on PRs - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 1 - - - name: Run Claude Code - id: claude - uses: anthropics/claude-code-action@beta - with: - claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} - - # This is an optional setting that allows Claude to read CI results on PRs - additional_permissions: | - actions: read - - # Optional: Specify model (defaults to Claude Sonnet 4, uncomment for Claude Opus 4) - # model: "claude-opus-4-20250514" - - # Optional: Customize the trigger phrase (default: @claude) - # trigger_phrase: "/claude" - - # Optional: Trigger when specific user is assigned to an issue - # assignee_trigger: "claude-bot" - - # Optional: Allow Claude to run specific commands - # allowed_tools: "Bash(npm install),Bash(npm run build),Bash(npm run test:*),Bash(npm run lint:*)" - - # Optional: Add custom instructions for Claude to customize its behavior for your project - # custom_instructions: | - # Follow our coding standards - # Ensure all new code has tests - # Use TypeScript for new files - - # Optional: Custom environment variables for Claude - # claude_env: | - # NODE_ENV: test - From 8fc2b992d66251b6122303cf2760b2012db7211a Mon Sep 17 00:00:00 2001 From: Mithun Gowda B Date: Tue, 15 Jul 2025 20:18:35 +0530 Subject: [PATCH 4/5] Update README.md Signed-off-by: Mithun Gowda B --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 30f06a1..8c26490 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # SuperClaude v3 🚀 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![PyPI version](https://badge.fury.io/py/SuperClaude.svg)](https://pypi.org/project/SuperClaude/) - [![Version](https://img.shields.io/badge/version-3.0.0-blue.svg)](https://github.com/NomenAK/SuperClaude) [![GitHub issues](https://img.shields.io/github/issues/NomenAK/SuperClaude)](https://github.com/NomenAK/SuperClaude/issues) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/NomenAK/SuperClaude/blob/master/CONTRIBUTING.md) From e70061bf032a1bdc7b0dcb22420f0fb80cc50df0 Mon Sep 17 00:00:00 2001 From: Mithun Gowda B Date: Tue, 15 Jul 2025 20:38:47 +0530 Subject: [PATCH 5/5] Update README.md Signed-off-by: Mithun Gowda B --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c26490..2a581c8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # SuperClaude v3 🚀 [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[![PyPI version](https://badge.fury.io/py/SuperClaude.svg)](https://pypi.org/project/SuperClaude/) +[![PyPI version](https://img.shields.io/pypi/v/SuperClaude.svg)](https://pypi.org/project/SuperClaude/) [![Version](https://img.shields.io/badge/version-3.0.0-blue.svg)](https://github.com/NomenAK/SuperClaude) [![GitHub issues](https://img.shields.io/github/issues/NomenAK/SuperClaude)](https://github.com/NomenAK/SuperClaude/issues) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/NomenAK/SuperClaude/blob/master/CONTRIBUTING.md)