{"id":37074154,"url":"https://github.com/cjgdev/midi-markdown","last_synced_at":"2026-01-14T08:43:53.028Z","repository":{"id":324446914,"uuid":"1093783146","full_name":"cjgdev/midi-markdown","owner":"cjgdev","description":"A human-readable, text-based format for creating and automating MIDI sequences","archived":false,"fork":false,"pushed_at":"2025-11-15T18:22:35.000Z","size":1665,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-15T22:21:02.656Z","etag":null,"topics":["midi","midi-files"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":false,"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/cjgdev.png","metadata":{"files":{"readme":".github/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":null,"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":"2025-11-10T20:46:19.000Z","updated_at":"2025-11-15T21:46:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cjgdev/midi-markdown","commit_stats":null,"previous_names":["cjgdev/midi-markdown"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/cjgdev/midi-markdown","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjgdev%2Fmidi-markdown","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjgdev%2Fmidi-markdown/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjgdev%2Fmidi-markdown/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjgdev%2Fmidi-markdown/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cjgdev","download_url":"https://codeload.github.com/cjgdev/midi-markdown/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cjgdev%2Fmidi-markdown/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28414692,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T08:38:59.149Z","status":"ssl_error","status_checked_at":"2026-01-14T08:38:43.588Z","response_time":107,"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":["midi","midi-files"],"created_at":"2026-01-14T08:43:52.425Z","updated_at":"2026-01-14T08:43:53.016Z","avatar_url":"https://github.com/cjgdev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitHub Configuration\n\nThis directory contains GitHub-specific configuration and automation scripts.\n\n## Contents\n\n### Pull Request Template\n\n**File**: `PULL_REQUEST_TEMPLATE.md`\n\nComprehensive PR template that ensures all pull requests include:\n- Description and motivation\n- Type of change classification\n- Test coverage details\n- Documentation updates\n- Code quality checklist\n- Breaking changes documentation\n- Performance impact assessment\n\nThis template is automatically loaded when creating PRs via GitHub web UI or can be filled programmatically using the scripts below.\n\n### Automation Scripts\n\n**Directory**: `scripts/`\n\nHelper scripts for automating GitHub workflows:\n\n1. **`fill-pr-template.sh`** - Auto-fills PR template based on git changes\n2. **`create-pr-with-template.sh`** - Interactive PR creation with filled template\n\nSee [scripts/README.md](scripts/README.md) for detailed usage.\n\n### Issue Templates\n\n**Directory**: `ISSUE_TEMPLATE/`\n\nTemplates for bug reports, feature requests, and other issue types.\n\n## Quick Start\n\n### Creating a Pull Request\n\n**Option 1: Using justfile** (Recommended)\n```bash\n# Interactive mode - reviews template before creating\njust pr\n\n# With custom title\njust pr \"feat: Add awesome feature\"\n\n# Auto mode (no prompts)\njust pr-auto \"fix: Quick fix\"\n\n# Preview what the template will contain\njust pr-preview\n```\n\n**Option 2: Using scripts directly**\n```bash\n# Interactive mode\n.github/scripts/create-pr-with-template.sh\n\n# With custom title\n.github/scripts/create-pr-with-template.sh \"feat: Add feature\"\n\n# Auto mode\n.github/scripts/create-pr-with-template.sh \"fix: Bug fix\" --auto\n```\n\n**Option 3: Using Claude Code**\n```\n/create-pr\n```\n\n**Option 4: Manual**\n```bash\n# Generate filled template\n.github/scripts/fill-pr-template.sh \u003e pr-body.md\n\n# Edit as needed\n$EDITOR pr-body.md\n\n# Create PR with gh CLI\ngh pr create --title \"Your PR Title\" --body-file pr-body.md\n```\n\n## Features\n\n### Auto-Detection\n\nThe PR template scripts automatically detect and mark checkboxes based on:\n\n**Change Type Detection**:\n- Branch name patterns (`feature/*`, `fix/*`, `docs/*`, etc.)\n- File change patterns\n- Commit message analysis\n\n**File Change Detection**:\n- Documentation changes (`docs/*`)\n- Test changes (`tests/*`)\n- CI/CD changes (`.github/workflows/*`)\n- Build/tooling changes (`justfile`, `pyproject.toml`, etc.)\n\n**Commit Analysis**:\n- Lists all commits since branch diverged\n- Shows file statistics and changes\n- Auto-generates description from commits\n\n### Branch Naming Conventions\n\nFor best auto-detection results, use these branch naming patterns:\n\n```\nfeature/descriptive-name    → Marks as \"New feature\"\nfix/bug-description         → Marks as \"Bug fix\"\ndocs/what-you-updated       → Marks as \"Documentation\"\nrefactor/what-you-refactored → Marks as \"Code refactoring\"\nperf/optimization-name      → Marks as \"Performance improvement\"\ntest/test-description       → Marks as \"Test improvements\"\nchore/task-name             → Marks as \"Build/tooling changes\"\n```\n\nBranch names following this pattern will:\n1. Auto-generate PR titles (e.g., `feature/add-loops` → \"Feature: Add Loops\")\n2. Auto-check the appropriate \"Type of Change\" checkbox\n3. Provide better context in the PR description\n\n## Workflow\n\n### Recommended PR Creation Flow\n\n1. **Develop on a feature branch**:\n   ```bash\n   git checkout -b feature/your-feature\n   # Make changes, commit often\n   ```\n\n2. **Before creating PR**:\n   ```bash\n   # Run quality checks\n   just check       # Format, lint, typecheck\n   just test        # Run all tests\n   just test-cov    # Check coverage\n\n   # Update CHANGELOG.md if needed\n   ```\n\n3. **Create PR**:\n   ```bash\n   # Interactive mode (recommended for first-time)\n   just pr\n\n   # Or auto mode if you're confident\n   just pr-auto \"feat: Your feature description\"\n   ```\n\n4. **Review and customize**:\n   - Script shows filled template\n   - Customize any sections as needed\n   - Confirm to create PR\n\n5. **After PR created**:\n   - Monitor CI checks\n   - Address review comments\n   - Keep branch updated with main if needed\n\n### Claude Code Integration\n\nWhen using Claude Code, it will automatically:\n1. Detect when you're ready to create a PR\n2. Run the fill-pr-template script\n3. Analyze your changes\n4. Present the filled template for review\n5. Create the PR after confirmation\n\nUse the `/create-pr` slash command to trigger this flow.\n\n## Customization\n\n### Modifying the Template\n\nTo change what's included in PRs:\n\n1. Edit `.github/PULL_REQUEST_TEMPLATE.md` for structure\n2. Edit `.github/scripts/fill-pr-template.sh` for auto-fill logic\n3. Test changes: `just pr-preview`\n\n### Adding New Auto-Detections\n\nTo add new auto-detection patterns, edit `fill-pr-template.sh`:\n\n```bash\n# Example: Detect performance changes\nif echo \"$changed_files\" | grep -q \"performance/\"; then\n    performance=\"- [x]\"\nfi\n```\n\n## Troubleshooting\n\n### \"gh: command not found\"\nInstall GitHub CLI from https://cli.github.com/\n\n### \"Not in a git repository\"\nEnsure you're in the repository root directory\n\n### \"Current branch has no upstream\"\nThe script will automatically push and set upstream for you\n\n### Template not filled correctly\nThe scripts do their best to detect changes, but you can always:\n- Use interactive mode (option 2) to edit before creating\n- Use `just pr-preview` to see what would be generated\n- Manually edit the template after generation\n\n### PR created without template\nIf using `gh pr create` directly without the scripts, the template won't be auto-filled. Always use:\n- `just pr` (recommended)\n- `.github/scripts/create-pr-with-template.sh`\n- `/create-pr` (in Claude Code)\n\n## Best Practices\n\n1. **Always run quality checks** before creating PR:\n   ```bash\n   just check test\n   ```\n\n2. **Write descriptive commit messages** - they're used in PR description\n\n3. **Use conventional branch names** for better auto-detection\n\n4. **Update CHANGELOG.md** for notable changes (required in template)\n\n5. **Link related issues** in the Motivation section:\n   ```markdown\n   Closes #123\n   Fixes #456\n   Resolves #789\n   ```\n\n6. **Add test coverage** for new features and bug fixes\n\n7. **Update documentation** when adding features or changing behavior\n\n8. **Review the generated template** before creating - customize as needed\n\n## Integration with CI/CD\n\nGitHub Actions workflows (`.github/workflows/`) automatically:\n- Run tests on PR creation\n- Check code formatting and linting\n- Validate type hints\n- Check test coverage\n- Validate device libraries and examples\n\nEnsure all checks pass before requesting review.\n\n## Contributing\n\nTo improve the PR automation:\n\n1. **Test your changes**: Try with different branch types and change patterns\n2. **Update documentation**: Keep this README and `scripts/README.md` in sync\n3. **Add examples**: Show how new features work\n4. **Get feedback**: Try it yourself before recommending to others\n\n## See Also\n\n- [scripts/README.md](scripts/README.md) - Detailed script documentation\n- [PULL_REQUEST_TEMPLATE.md](PULL_REQUEST_TEMPLATE.md) - The actual template\n- [Contributing Guide](../CONTRIBUTING.md) - General contribution guidelines\n- [Development Guide](../docs/developer-guide/) - Architecture and patterns\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjgdev%2Fmidi-markdown","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcjgdev%2Fmidi-markdown","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcjgdev%2Fmidi-markdown/lists"}