Thank you for your interest in contributing to the GitHub Workflow Runner VS Code extension! This document provides guidelines and instructions for contributing to the project.
- Code of Conduct
- Getting Started
- Development Setup
- How to Contribute
- Pull Request Process
- Code Quality Standards
- Testing Requirements
- Commit Message Guidelines
- Branch Naming Conventions
- Documentation Structure
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please read CODE_OF_CONDUCT.md before contributing.
- Node.js: Version 22 or higher
- npm: Latest version
- VS Code: Latest version
- Git: For version control
- GitHub Account: For authentication testing
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/vscode-github-workflow-runner.git cd vscode-github-workflow-runner -
Add upstream remote:
git remote add upstream https://github.com/Asher-Kaligski/vscode-github-workflow-runner.git
-
Install dependencies:
npm install
-
Build the extension:
npm run compile
-
Run in development mode:
- Press
F5in VS Code to open a new Extension Development Host window - The extension will be loaded and ready for testing
- Press
If you find a bug, please create an issue using the Bug Report template. Include:
- Clear description of the bug
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots (if applicable)
- Environment details (VS Code version, OS, Node.js version)
For feature requests, use the Feature Request template. Include:
- Clear description of the feature
- Use case and motivation
- Proposed implementation (if you have ideas)
- Alternative solutions considered
- Check existing issues to see if someone is already working on it
- Create an issue if one doesn't exist
- Comment on the issue to let others know you're working on it
- Follow the development workflow outlined below
-
Sync with upstream:
git fetch upstream git checkout main git merge upstream/main
-
Create a feature branch:
git checkout -b feature/your-feature-name # or git checkout -b fix/your-bug-fix -
Make your changes following our code quality standards
-
Test thoroughly:
npm run compile npm test -
Commit your changes following our commit message guidelines
-
Push to your fork:
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub with:
- Clear title describing the change
- Reference to related issue(s)
- Description of changes made
- Screenshots/GIFs for UI changes
- Checklist completed (from PR template)
-
Wait for review:
- All PRs require review and approval from Asher Kaligski before merge
- Address any feedback or requested changes
- Keep your PR up to date with the main branch
- β Code compiles without errors
- β All tests pass
- β No TypeScript errors
- β Documentation updated (if applicable)
- β CHANGELOG.md updated (for significant changes)
- β Tested in VS Code Extension Development Host
- β No breaking changes (or clearly documented)
- Use strict TypeScript settings
- Prefer
unknownoveranyfor better type safety - Use explicit return types for functions
- Avoid
@ts-ignorecomments (use@ts-expect-errorwith explanation if necessary) - Use proper error handling with try-catch blocks
- Indentation: 4 spaces (configured in
.editorconfig) - Line length: Maximum 120 characters
- Quotes: Single quotes for strings
- Semicolons: Required
- Trailing commas: Required for multi-line objects/arrays
- Early returns: Avoid deep nesting by returning early
- Descriptive names: Use clear, self-documenting variable and function names
- Comments: Add JSDoc comments for public functions
- DRY principle: Don't repeat yourself - extract reusable code
- Single responsibility: Each function should do one thing well
- Error handling: Always handle errors gracefully with user-friendly messages
- Keep components small and focused
- Use TypeScript in
<script lang="ts">blocks - Follow reactive statement best practices
- Use proper prop typing with
export let - Add transitions for better UX
Before submitting a PR, test the following:
- Extension activation: Extension loads without errors
- Authentication: GitHub token validation works
- Workflow dispatch: Can trigger workflows successfully
- UI rendering: All UI components render correctly
- Error handling: Errors are displayed properly to users
- Edge cases: Test with invalid inputs, network failures, etc.
- Add unit tests for new utility functions
- Test error handling paths
- Run all tests before submitting:
npm test
- Tested in VS Code Extension Development Host
- Tested with valid GitHub token
- Tested with invalid/expired token
- Tested workflow dispatch with various input types
- Tested error scenarios (network failures, API errors)
- Tested on different operating systems (if possible)
Follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, no logic change)refactor: Code refactoring (no feature change or bug fix)perf: Performance improvementstest: Adding or updating testschore: Maintenance tasks, dependency updates
feat(workflow): add support for environment inputs
- Added environment input type to workflow form
- Updated form generator to handle environment selection
- Added tests for environment input validation
Closes #123
fix(auth): handle expired token gracefully
Previously, expired tokens would cause the extension to crash.
Now displays a user-friendly error message and prompts for re-authentication.
Fixes #456
Use descriptive branch names with the following prefixes:
feature/- New features (e.g.,feature/add-workflow-templates)fix/- Bug fixes (e.g.,fix/token-validation-error)docs/- Documentation updates (e.g.,docs/update-readme)refactor/- Code refactoring (e.g.,refactor/simplify-api-client)test/- Test additions/updates (e.g.,test/add-auth-tests)chore/- Maintenance tasks (e.g.,chore/update-dependencies)
- Use VS Code's built-in debugger (F5)
- Check the Extension Development Host console for errors
- Use
console.login webview code (visible in Developer Tools) - See DEBUGGING.md for detailed debugging guide
- Changes to TypeScript code require recompiling (
npm run compile) - Reload the Extension Development Host window (Ctrl+R / Cmd+R)
- Svelte changes require rebuilding the webview
npm run compile # Compile TypeScript
npm run watch # Watch mode for development
npm run package # Build production bundle
npm run vsce:package # Create VSIX packageThe documentation is organized into a hierarchical structure for clarity and maintainability:
βββ README.md # User-facing documentation (features, installation, usage)
βββ CONTRIBUTING.md # Contributor guidelines (this file)
βββ CODE_OF_CONDUCT.md # Community conduct rules
βββ docs/ # Technical documentation
β βββ IMPLEMENTATION.md # Implementation overview and project structure
β βββ WORKFLOW_RERUN_LOGIC.md # Feature-specific technical documentation
β βββ WORKFLOW_RUNS_ARCHITECTURE.md # Comprehensive architecture guide
β βββ architecture/ # Deep-dive architecture documentation
β βββ WORKFLOW_RUNS_FILTERING.md # Detailed filtering system guide
β βββ WORKFLOW_RUNS_ARCHITECTURE_DIAGRAMS.md # Standalone Mermaid diagrams
βββ .github/
βββ ISSUE_TEMPLATE/ # GitHub issue templates
βββ bug_report.md
βββ feature_request.md
Rationale for Subfolder Organization:
| Location | Purpose | Audience |
|---|---|---|
| Root level | Standard open-source project files that GitHub and users expect at the root | All users and contributors |
| docs/ | Technical documentation that goes beyond basic usage | Developers and contributors |
| docs/architecture/ | Deep-dive architecture docs with diagrams and implementation details | Core contributors and maintainers |
| .github/ISSUE_TEMPLATE/ | GitHub-specific templates (required location by GitHub) | Issue reporters |
We follow these naming conventions for markdown files:
| Location | Convention | Examples | Rationale |
|---|---|---|---|
| Root level | UPPERCASE.md |
README.md, CONTRIBUTING.md |
Industry standard for important project files |
| docs/ | UPPERCASE.md |
IMPLEMENTATION.md, WORKFLOW_RERUN_LOGIC.md |
Consistency with root-level docs; signals importance |
| docs/architecture/ | UPPERCASE.md |
WORKFLOW_RUNS_FILTERING.md |
Consistency with parent directory |
| .github/ISSUE_TEMPLATE/ | lowercase.md |
bug_report.md, feature_request.md |
GitHub convention for templates |
Note: All documentation files now follow the UPPERCASE.md convention for consistency.
- Root level: Only for standard project files (LICENSE, SECURITY.md, etc.)
- docs/: For new feature documentation, guides, or technical explanations
- docs/architecture/: For detailed system architecture, diagrams, or implementation deep-dives
Thank you for contributing to the GitHub Workflow Runner! Your contributions help make this extension better for everyone.
If you have questions, feel free to:
- Open an issue for discussion
- Reach out to the maintainer: Asher Kaligski
Happy coding! π