{"id":41704044,"url":"https://github.com/xrequillart/magic-slash","last_synced_at":"2026-04-16T10:04:24.905Z","repository":{"id":334394784,"uuid":"1141208076","full_name":"Xrequillart/magic-slash","owner":"Xrequillart","description":"Three commands for Claude Code — use /start, /commit, /done or just say \"work on PROJ-123\". From Jira/GitHub to PR in seconds.","archived":false,"fork":false,"pushed_at":"2026-03-12T19:35:24.000Z","size":8571,"stargazers_count":3,"open_issues_count":8,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-13T00:15:23.209Z","etag":null,"topics":["claude-code","claudecode","skills","slash-commands","slashcommands"],"latest_commit_sha":null,"homepage":"http://magic-slash.io/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Xrequillart.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T12:59:45.000Z","updated_at":"2026-03-12T19:35:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Xrequillart/magic-slash","commit_stats":null,"previous_names":["xrequillart/magic-slash"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/Xrequillart/magic-slash","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xrequillart%2Fmagic-slash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xrequillart%2Fmagic-slash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xrequillart%2Fmagic-slash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xrequillart%2Fmagic-slash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Xrequillart","download_url":"https://codeload.github.com/Xrequillart/magic-slash/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Xrequillart%2Fmagic-slash/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30466577,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","claudecode","skills","slash-commands","slashcommands"],"created_at":"2026-01-24T21:18:35.818Z","updated_at":"2026-04-16T10:04:24.899Z","avatar_url":"https://github.com/Xrequillart.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cpicture\u003e\n    \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs/logo-readme-dark.svg\"\u003e\n    \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"docs/logo-readme-light.svg\"\u003e\n    \u003cimg src=\"docs/logo-readme-light.svg\" alt=\"Magic Slash\" height=\"80\"\u003e\n  \u003c/picture\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Desktop app with 7 Claude Code skills to automate your entire dev cycle — from Jira ticket to merged PR.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/desktop-preview.png\" alt=\"Magic Slash Desktop\" width=\"700\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xrequillart/magic-slash/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/xrequillart/magic-slash/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xrequillart/magic-slash/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/xrequillart/magic-slash\" alt=\"Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/xrequillart/magic-slash\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://github.com/xrequillart/magic-slash/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/xrequillart/magic-slash\" alt=\"Stars\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Skills\n\n| Skill             | Description                                       |\n| ----------------- | ------------------------------------------------- |\n| `/magic:start`    | Start a task from a Jira ticket or GitHub issue   |\n| `/magic:continue` | Resume work on an existing ticket                 |\n| `/magic:commit`   | Create an atomic commit with conventional message |\n| `/magic:pr`       | Push, create PR and update Jira                   |\n| `/magic:review`   | Review a Pull Request (self or external)          |\n| `/magic:resolve`  | Address review comments and force-push fixes      |\n| `/magic:done`     | Finalize after PR merge (transition Jira to Done) |\n\n\u003e Type `/magic:` to quickly find all commands.\n\nYou can also invoke skills using natural language:\n\n- \"démarre PROJ-123\" or \"work on PROJ-123\" → `/magic:start`\n- \"je reprends PROJ-123\" or \"continue PROJ-123\" → `/magic:continue`\n- \"je suis prêt à committer\" or \"ready to commit\" → `/magic:commit`\n- \"on peut créer la PR\" or \"create the PR\" → `/magic:pr`\n- \"regarde la PR\" or \"review my PR\" → `/magic:review`\n- \"corriger les commentaires\" or \"fix review comments\" → `/magic:resolve`\n- \"la PR est mergée\" or \"the PR is merged\" → `/magic:done`\n\n## Installation\n\n```bash\ncurl -fsSL https://magic-slash.io/install.sh | bash\n```\n\n### Prerequisites\n\n- [Claude Code](https://claude.ai/download)\n- Node.js 20+ (see `.nvmrc`)\n- Git\n- jq\n\n### What the script does\n\n1. Configures Atlassian MCP (prompts for OAuth authentication)\n2. Configures GitHub MCP (prompts for your token)\n3. Configures your repositories (1 to N repos with optional keywords for smart detection)\n4. Installs the 7 skills\n\n## Usage\n\n### /magic:start - Start a task\n\n```bash\n/magic:start PROJ-1234    # Jira ticket\n/magic:start 42           # GitHub issue\n/magic:start #42          # GitHub issue (with #)\n```\n\n1. Detects the ticket type (Jira or GitHub) based on format\n2. Fetches ticket/issue details (title, description, labels)\n3. Analyzes the scope using keyword-based scoring to select relevant repositories\n4. Creates Git worktrees automatically for selected repos\n5. Generates an agent context to start coding\n\n**Jira example (single repo detected):**\n\n```text\n\u003e /magic:start PROJ-42\n\nSource: Jira\nTicket: PROJ-42 - Add API endpoint for users\nType: Feature\nScope: api (score: 15) - matched keywords: \"backend\", \"api\"\n\nWorktree created:\n✓ /projects/my-api-PROJ-42\n\nContext:\nYou need to implement the new API endpoint for users...\n```\n\n**Jira example (multiple repos detected):**\n\n```text\n\u003e /magic:start PROJ-42\n\nSource: Jira\nTicket: PROJ-42 - Add pagination on /users\nType: Feature\n\nThis ticket seems to concern multiple repositories:\n1. api (score: 15) - matched keywords: \"backend\", \"api\"\n2. web (score: 10) - matched keywords: \"frontend\"\n\nWhich one do you want to use? (1, 2, or 'all')\n\u003e all\n\nWorktrees created:\n✓ /projects/my-api-PROJ-42\n✓ /projects/my-web-PROJ-42\n```\n\n### /magic:commit - Create a commit\n\n```bash\n/magic:commit\n```\n\n1. Stage all changes\n2. Analyze the diff\n3. Evaluate if changes should be split into multiple commits\n4. Generate a conventional message (respects per-repo settings)\n5. Auto-fix pre-commit hook errors (lint, format, etc.)\n6. Create the commit\n\n**Format examples:**\n\n| Format       | Example                                       |\n| ------------ | --------------------------------------------- |\n| conventional | `feat: add JWT token refresh mechanism`       |\n| angular      | `feat(auth): add JWT token refresh mechanism` |\n| gitmoji      | `:sparkles: add JWT token refresh mechanism`  |\n\n**With ticket ID (if enabled):**\n\n```text\n[PROJ-123] feat(auth): add JWT token refresh mechanism\n```\n\n**Multi-repo support:** If you're in a worktree associated with a ticket that spans multiple repos,\n`/magic:commit` will detect all related worktrees and commit changes in each one.\n\n### /magic:pr - Push and create a Pull Request\n\n```bash\n/magic:pr\n```\n\n1. Push the branch to origin\n2. Create a Pull Request (via GitHub MCP)\n   - Uses your project's PR template if one exists\n   - Auto-links Jira/GitHub tickets in description (by default)\n3. Extract ticket ID from branch name\n4. Update Jira ticket → \"To be reviewed\"\n5. Add comment with PR link on Jira (by default)\n\n**Multi-repo support:** If you're in a worktree associated with a ticket that spans multiple repos,\n`/magic:pr` will push and create PRs for each one.\n\n**Example:**\n\n```text\n📌 Branch   : feature/PROJ-42\n🔗 PR       : https://github.com/org/repo/pull/42\n🎫 Ticket   : PROJ-42 → To be reviewed\n\nNext steps:\n1. Request a review from your colleagues\n2. Wait for approval and CI checks\n3. Merge the PR once approved\n```\n\n### /magic:review - Review a Pull Request\n\n```bash\n/magic:review          # Review the PR for the current branch\n/magic:review PROJ-42  # Review a specific ticket's PR\n```\n\n1. Detect the PR associated with the current branch (or a given ticket)\n2. Determine if this is a self-review or an external review\n3. Fetch the PR diff and changed files\n4. Analyze each file for issues, suggestions, and good practices\n5. Submit the review on GitHub with categorized inline comments (Blocking / Suggestion / Praise)\n\n\u003e **Note:** This skill is read-only — it does not modify any files.\n\n### /magic:resolve - Address review feedback\n\n```bash\n/magic:resolve          # Fix comments on the current branch's PR\n/magic:resolve PROJ-42  # Fix comments for a specific ticket's PR\n```\n\n1. Retrieve unresolved review comments from the PR\n2. Analyze each comment and determine required changes\n3. Apply fixes to the codebase\n4. Amend or create fixup commits as appropriate\n5. Force-push with `--force-with-lease`\n\n### /magic:done - Finalize after merge\n\n```bash\n/magic:done\n```\n\n1. Verify the PR has been merged\n2. Transition the Jira ticket to \"Done\"\n3. Add a final comment on Jira with a summary\n4. Update task status in the Desktop app\n\n**Example:**\n\n```text\n✅ Task finalized!\n\n🎫 Ticket   : PROJ-42 → Done\n🔗 PR       : https://github.com/org/repo/pull/42 (merged)\n```\n\n## Desktop App\n\nMagic Slash ships a native desktop application built with Electron, featuring integrated Claude Code terminals, project management sidebar, and agent tracking. The app checks for updates automatically on launch.\n\n```bash\n# Install desktop dependencies\nnpm run desktop:install\n\n# Run in development mode\nnpm run desktop\n\n# Build for production\nnpm run desktop:build\n\n# Package for macOS\nnpm run desktop:package\n```\n\n## Configuration\n\n### Files\n\n| File                                | Description                           |\n| ----------------------------------- | ------------------------------------- |\n| `~/.claude/settings.json`           | Atlassian \u0026 GitHub MCP configuration  |\n| `~/.config/magic-slash/config.json` | Repository paths, keywords, settings  |\n| `~/.local/bin/magic-slash`          | CLI command to launch the desktop app |\n| `~/.claude/skills/magic-slash/`     | Installed skills (all 7 skills)       |\n\n### Configuration schema\n\n```json\n{\n  \"version\": \"0.37.2\",\n  \"repositories\": {\n    \"api\": {\n      \"path\": \"/Users/dev/projects/my-api\",\n      \"keywords\": [\"backend\", \"api\", \"server\"],\n      \"color\": \"#3B82F6\",\n      \"languages\": {\n        \"commit\": \"en\",\n        \"pullRequest\": \"fr\",\n        \"jiraComment\": \"en\",\n        \"discussion\": \"en\"\n      },\n      \"commit\": {\n        \"style\": \"single-line\",\n        \"format\": \"angular\",\n        \"coAuthor\": true,\n        \"includeTicketId\": true\n      },\n      \"resolve\": {\n        \"commitMode\": \"new\",\n        \"useCommitConfig\": true,\n        \"replyToComments\": true,\n        \"replyLanguage\": \"en\"\n      },\n      \"pullRequest\": {\n        \"autoLinkTickets\": true\n      },\n      \"issues\": {\n        \"commentOnPR\": true,\n        \"jiraUrl\": \"\",\n        \"githubIssuesUrl\": \"\"\n      },\n      \"branches\": {\n        \"development\": \"develop\"\n      },\n      \"worktreeFiles\": [\".env\", \".env.local\"]\n    },\n    \"web\": {\n      \"path\": \"/Users/dev/projects/my-web\",\n      \"keywords\": [\"frontend\", \"ui\", \"react\"]\n    }\n  }\n}\n```\n\n\u003e The `version` field is managed automatically by the installer.\n\n### Repository settings\n\nEach repository can be independently configured:\n\n#### Languages\n\n| Setting       | Description                           | Default |\n| ------------- | ------------------------------------- | ------- |\n| `commit`      | Language for commit messages          | `en`    |\n| `pullRequest` | Language for PR title and description | `en`    |\n| `jiraComment` | Language for Jira comments            | `en`    |\n| `discussion`  | Language for Claude Code interactions | `en`    |\n\n\u003e Supported languages: `en` (English) and `fr` (French).\n\n#### Commit settings\n\n| Setting           | Description                                      | Default       |\n| ----------------- | ------------------------------------------------ | ------------- |\n| `style`           | `single-line` or `multi-line` (with body)        | `single-line` |\n| `format`          | `conventional`, `angular`, `gitmoji`, or `none`  | `angular`     |\n| `coAuthor`        | Add Claude as co-author in commits               | `true`        |\n| `includeTicketId` | Add ticket ID from branch name in commit message | `true`        |\n\n#### Resolve settings\n\n| Setting           | Description                                               | Default |\n| ----------------- | --------------------------------------------------------- | ------- |\n| `commitMode`      | `new` (new commit + push) or `amend` (amend + force-push) | `new`   |\n| `useCommitConfig` | Inherit format/style from commit settings                 | `true`  |\n| `replyToComments` | Reply in-thread on GitHub for each resolved comment       | `true`  |\n| `replyLanguage`   | Language for comment replies (`en`, `fr`)                 | `en`    |\n\n#### Pull Request settings\n\n| Setting           | Description                                    | Default |\n| ----------------- | ---------------------------------------------- | ------- |\n| `autoLinkTickets` | Add Jira/GitHub ticket links in PR description | `true`  |\n\n#### Issues settings\n\n| Setting           | Description                                   | Default |\n| ----------------- | --------------------------------------------- | ------- |\n| `commentOnPR`     | Add comment with PR link when creating the PR | `true`  |\n| `jiraUrl`         | Base URL for Jira instance                    | `\"\"`    |\n| `githubIssuesUrl` | URL for GitHub Issues                         | `\"\"`    |\n\n#### Branches settings\n\n| Setting       | Description                                                | Default |\n| ------------- | ---------------------------------------------------------- | ------- |\n| `development` | Base branch for worktrees and PRs (e.g. `develop`, `main`) | `\"\"`    |\n\n\u003e If `development` is empty, the skill prompts the user to specify the base branch.\n\n#### Worktree files\n\n| Setting         | Description                                                   | Default |\n| --------------- | ------------------------------------------------------------- | ------- |\n| `worktreeFiles` | Files to auto-copy from main repo to worktrees (e.g., `.env`) | `[]`    |\n\n\u003e When creating a worktree, Magic Slash copies these files from the main repository. If not configured, it auto-detects common untracked files and offers to save them for future use.\n\n### Keywords\n\nKeywords are used for smart repository selection when starting a task:\n\n- When a Jira ticket has labels/components matching keywords → +10 points\n- When keywords are found in the ticket title → +5 points\n- When keywords are found in the description → +2 points\n- If no keywords are specified, the repository name is used as default\n\n## Project structure\n\n```text\nmagic-slash/\n├── .github/\n│   ├── ISSUE_TEMPLATE/   # Bug report, feature request templates \u0026 config\n│   ├── workflows/        # CI and release workflows\n│   ├── PULL_REQUEST_TEMPLATE.md\n│   └── dependabot.yml\n├── desktop/               # Electron desktop app\n│   ├── src/\n│   │   ├── main/          # Main process (config, PTY, IPC)\n│   │   ├── preload/       # Secure bridge\n│   │   └── renderer/      # React UI (pages, components, hooks)\n│   ├── resources/         # App icons \u0026 logo\n│   └── package.json\n├── skills/                        # Claude Code skills (7 skills)\n│   ├── magic-start/              # Start a task\n│   │   ├── SKILL.md\n│   │   └── references/           # Messages, glossary, API docs, templates\n│   ├── magic-continue/           # Resume work on a ticket\n│   │   ├── SKILL.md\n│   │   └── references/\n│   ├── magic-commit/             # Create atomic commits\n│   │   ├── SKILL.md\n│   │   └── references/\n│   ├── magic-pr/                 # Push and create PR\n│   │   ├── SKILL.md\n│   │   └── references/\n│   ├── magic-review/SKILL.md     # Review a Pull Request\n│   ├── magic-resolve/            # Address review feedback\n│   │   ├── SKILL.md\n│   │   └── references/\n│   ├── magic-done/SKILL.md       # Finalize after merge\n│   └── evals/                    # Eval set and results\n├── docs/                 # Landing page (GitHub Pages)\n│   ├── index.html        # Main page\n│   ├── documentation.html # Documentation page\n│   ├── logo.svg          # Logo (vector)\n│   ├── fonts/            # Custom fonts (Avenir, CeraPro)\n│   └── CNAME             # Custom domain config\n├── install/\n│   ├── install.sh        # Installation script\n│   ├── uninstall.sh      # Uninstallation script\n│   └── magic-slash       # CLI script (launches Desktop app)\n├── CHANGELOG.md          # Version history\n├── CODE_OF_CONDUCT.md    # Community guidelines\n├── CONTRIBUTING.md       # Contribution guide\n├── LICENSE               # MIT License\n├── README.md             # This file\n├── SECURITY.md           # Security policy\n├── commitlint.config.js  # Commit message linting\n├── eslint.config.mjs     # ESLint configuration\n├── vitest.config.ts      # Test configuration\n└── package.json          # Dev dependencies (linters, tests)\n```\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines before getting started.\n\n- [Contributing Guide](CONTRIBUTING.md) - How to contribute to the project\n- [Code of Conduct](CODE_OF_CONDUCT.md) - Our community standards\n- [Security Policy](SECURITY.md) - How to report security vulnerabilities\n\n### Quick Start for Contributors\n\n```bash\n# Clone the repository\ngit clone https://github.com/xrequillart/magic-slash.git\ncd magic-slash\n\n# Install dev dependencies\nnpm install\n\n# Install yamllint (required for YAML linting)\npip install yamllint    # or: brew install yamllint\n\n# Run linters\nnpm run lint\n\n# Run tests\nnpm test\n\n# Install desktop dependencies and run in dev mode\nnpm run desktop:install\nnpm run desktop\n```\n\n## Acknowledgments\n\nMagic Slash is built with and for:\n\n- [Claude Code](https://claude.ai/download) - AI-powered coding assistant\n- [Atlassian MCP](https://mcp.atlassian.com) - Jira and Confluence integration\n- [GitHub MCP](https://github.com/modelcontextprotocol/server-github) - GitHub integration\n- [Conventional Commits](https://www.conventionalcommits.org/) - Commit message standard\n- [Electron](https://www.electronjs.org/) - Desktop application framework\n- [React](https://react.dev/) - UI library for desktop app\n- [Tailwind CSS](https://tailwindcss.com/) - Utility-first CSS framework\n\n## License\n\nMIT - See [LICENSE](LICENSE) for details.\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with love by \u003ca href=\"https://github.com/xrequillart\"\u003eXrequillart\u003c/a\u003e\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxrequillart%2Fmagic-slash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxrequillart%2Fmagic-slash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxrequillart%2Fmagic-slash/lists"}