|
| 1 | +# Contributing to Keystone CLI |
| 2 | + |
| 3 | +Thank you for your interest in contributing to Keystone CLI. This document provides guidelines |
| 4 | +and pointers to help you get started. |
| 5 | + |
| 6 | +## Getting Started |
| 7 | + |
| 8 | +1. Fork the repository |
| 9 | +2. Clone your fork locally |
| 10 | +3. Review the [README](README.md) for project overview and installation instructions |
| 11 | +4. Review [CLAUDE.md](CLAUDE.md) for development commands and architecture details |
| 12 | + |
| 13 | +## Development Setup |
| 14 | + |
| 15 | +The project uses .NET 10.0 and follows clean architecture principles. |
| 16 | + |
| 17 | +```bash |
| 18 | +# Build the project |
| 19 | +dotnet build |
| 20 | + |
| 21 | +# Run tests |
| 22 | +dotnet test |
| 23 | + |
| 24 | +# Run the CLI |
| 25 | +dotnet run --project src/Keystone.Cli |
| 26 | +``` |
| 27 | + |
| 28 | +For complete build commands, testing options, and architecture details, see [CLAUDE.md](CLAUDE.md). |
| 29 | + |
| 30 | +## Reporting Issues |
| 31 | + |
| 32 | +Before opening an issue, search existing issues to avoid duplicates. |
| 33 | + |
| 34 | +### Bug Reports |
| 35 | + |
| 36 | +Use the [bug report template](.github/ISSUE_TEMPLATE/bug.md) for issues where something is not |
| 37 | +working as expected. Include: |
| 38 | + |
| 39 | +- What happened vs. what was expected |
| 40 | +- Steps to reproduce |
| 41 | +- Environment details (OS, CLI version) |
| 42 | + |
| 43 | +### Feature Requests and Tasks |
| 44 | + |
| 45 | +Use the [task template](.github/ISSUE_TEMPLATE/task.md) for enhancements, improvements, or |
| 46 | +planned work. Focus on outcomes rather than implementation details. |
| 47 | + |
| 48 | +## Submitting Changes |
| 49 | + |
| 50 | +This project follows a structured workflow documented in |
| 51 | +[docs/how-to/how-to-workflow.md](docs/how-to/how-to-workflow.md). |
| 52 | + |
| 53 | +### Quick Reference |
| 54 | + |
| 55 | +1. Create a branch for your work |
| 56 | +2. Make your changes with clear, focused commits |
| 57 | +3. Ensure tests pass: `dotnet test` |
| 58 | +4. Open a pull request using the [PR template](.github/pull_request_template.md) |
| 59 | +5. Use an outcome-focused PR title (it becomes a release note entry) |
| 60 | +6. Reference related issues with `Fixes #N` or `Refs #N` |
| 61 | +7. Apply appropriate labels (`bug`, `enhancement`, `documentation`) |
| 62 | + |
| 63 | +### Code Quality |
| 64 | + |
| 65 | +- The project uses `TreatWarningsAsErrors` — all warnings must be resolved |
| 66 | +- Follow existing code patterns and architecture |
| 67 | +- Include unit tests for new functionality |
| 68 | +- Run `dotnet test` before submitting |
| 69 | + |
| 70 | +## Labels |
| 71 | + |
| 72 | +Apply labels to issues and PRs. Labels determine how changes are grouped in auto-generated |
| 73 | +release notes. See [.github/release.yml](.github/release.yml) for the full categorization |
| 74 | +configuration. |
| 75 | + |
| 76 | +| Label | Use For | |
| 77 | +|--------------------|---------------------------------------------| |
| 78 | +| `breaking-change` | Incompatible API or behavior change | |
| 79 | +| `security` | Security fixes or improvements | |
| 80 | +| `enhancement` | New feature or improvement | |
| 81 | +| `bug` | Something is broken | |
| 82 | +| `documentation` | Documentation changes | |
| 83 | +| `dependencies` | Dependency updates | |
| 84 | +| `question` | Clarification or discussion | |
| 85 | +| `good-first-issue` | Good for newcomers | |
| 86 | +| `help-wanted` | Extra attention needed | |
| 87 | +| `duplicate` | Duplicate issue (excluded from notes) | |
| 88 | +| `invalid` | Not valid (excluded from notes) | |
| 89 | +| `wont-fix` | Will not be addressed (excluded from notes) | |
| 90 | + |
| 91 | +## Release Process |
| 92 | + |
| 93 | +Releases are tag-driven and automated. For maintainers, the complete release process is |
| 94 | +documented in [docs/how-to/how-to-release.md](docs/how-to/how-to-release.md). |
| 95 | + |
| 96 | +## Additional Resources |
| 97 | + |
| 98 | +- [Development workflow](docs/how-to/how-to-workflow.md) — issue tracking, PRs, and merging |
| 99 | +- [Release process](docs/how-to/how-to-release.md) — version management and publishing |
| 100 | +- [Testing man pages](docs/how-to/how-to-test-man-page.md) — local man page validation |
| 101 | +- [Architecture and commands](CLAUDE.md) — project structure and development reference |
| 102 | + |
| 103 | +## Questions |
| 104 | + |
| 105 | +For questions or discussion, open an issue with the `question` label or start a |
| 106 | +[GitHub Discussion](https://github.com/knight-owl-dev/keystone-cli/discussions) if enabled. |
0 commit comments