GitHub Guide
How we use GitHub at Kyndof for version control, code collaboration, and technical project management.
GitHub is where Kyndof's code, technical specifications, and technical collaboration happen. This guide is for everyone—technical and non-technical team members alike.
What GitHub Is For
GitHub is our version control and code collaboration platform, built on Git.
Use GitHub for:
- Source code and version control
- Technical specifications and architecture docs
- Issue tracking for technical work
- Code reviews and pull requests
- Technical project boards
- Architecture Decision Records (ADRs)
- Infrastructure as code (deployment configs)
Don't use GitHub for:
- Non-technical project management (use Notion)
- Real-time chat (use Slack)
- Large binary files (use Google Drive or S3)
- Business documentation (use Notion or Wiki)
- Sensitive credentials (use 1Password)
GitHub is optimized for code and text files that change over time and need version history.
GitHub Basics for Non-Technical Users
You don't need to be an engineer to use GitHub. Here's what you need to know:
Key Concepts
Repository (repo) - A project folder containing code and files
- Think of it as a shared project folder
- Everyone can see the files and their history
- Changes are tracked over time
Commit - A saved snapshot of changes
- Like "Save As" with a description of what changed
- Creates permanent record in version history
- Can always go back to previous commits
Branch - A parallel version of the code
- Lets people work on features without affecting main code
- Merged back to main when ready
- Main branch is usually called
mainormaster
Pull Request (PR) - A proposal to merge changes
- "Please review these changes and merge if good"
- Allows discussion and review before merging
- Shows exactly what changed
Issue - A tracked task, bug, or discussion
- Like a ticket or card in project management
- Can be assigned to people
- Can be linked to commits and PRs
Web Interface
You can do most things through GitHub's web interface without using command line:
View files:
- Go to repository
- Click on folders and files to browse
- Click file name to see contents
- Click "History" to see changes over time
Edit files:
- Click file name
- Click pencil icon (Edit this file)
- Make changes in browser
- Scroll down, describe changes
- Click "Commit changes"
Create issues:
- Go to repository
- Click "Issues" tab
- Click "New issue"
- Fill in title and description
- Add labels, assignees, projects
- Click "Submit new issue"
Comment on PRs:
- Go to "Pull requests" tab
- Click PR title
- Review changes in "Files changed" tab
- Click line number to add comment
- Submit review (Approve, Request changes, or Comment)
Kyndof's GitHub Organization
Kyndof's GitHub organization: github.com/kyndof
Repository Structure
Our repositories are organized by purpose:
Product Repositories:
- kyndof-os - Main operating system (CompanyOS)
- runtime - Backend services and APIs
- world-model - Knowledge graph and data models
- wiki - Internal wiki (this site you're reading)
Service Repositories:
- slack-bot - Nubabel Slack integration
- notion-sync - Notion synchronization service
- auth-service - Authentication and authorization
Infrastructure:
- infrastructure - Terraform and deployment configs
- docker-configs - Docker and container configs
- ci-cd - CI/CD pipeline definitions
Archive:
- Old or experimental repos (prefixed with
archive-)
Naming Conventions
Repository naming:
product-name- Product repositoriesservice-name- Backend servicestool-name- Internal toolsarchive-name- Archived projects
Branch naming:
main- Primary branch (production-ready)develop- Development branch (staging)feature/feature-name- New featuresfix/bug-name- Bug fixesdocs/topic- Documentation updatesrefactor/area- Code refactoring
Commit message format:
type(scope): description
feat(auth): add OAuth2 support
fix(api): resolve race condition in user creation
docs(readme): update installation instructions
refactor(db): simplify query builder
Working with Repositories
Cloning a Repository
What it means: Download a copy to work on locally
How to clone:
- Go to repository page
- Click green "Code" button
- Copy HTTPS URL
- In terminal:
git clone [URL]
Or use GitHub Desktop (easier for beginners):
- Download GitHub Desktop
- File → Clone repository
- Choose repository from list
- Pick local folder
Making Changes
Direct web editing (small changes only):
- Navigate to file on GitHub.com
- Click pencil icon
- Edit in browser
- Commit with description
Local editing (recommended for larger work):
- Clone repository
- Create new branch:
git checkout -b feature/my-feature - Make changes in your editor
- Save files
- Commit changes:
git add .thengit commit -m "description" - Push to GitHub:
git push origin feature/my-feature - Create pull request on GitHub
Understanding Diffs
Diff shows what changed between versions:
- Green lines with
+- Added content - Red lines with
-- Removed content - White lines - Unchanged context
Reading diffs:
- Look at file name at top
- Scroll through changes
- Comments often explain why changes were made
Pull Requests (PRs)
PRs are how code changes get reviewed and merged.
Creating a Pull Request
- Push your branch to GitHub
- Go to repository on GitHub.com
- Click "Pull requests" tab
- Click "New pull request"
- Select your branch to merge into
main - Fill in PR template:
- Title - Clear, concise description
- Description - What changed and why
- Linked issues - Reference related issues
- Screenshots - For UI changes
- Testing - How you verified it works
- Request reviewers
- Click "Create pull request"
PR Template (Kyndof Standard)
## What Changed
Brief description of the changes
## Why
Reason for this change (business context, bug fix, etc.)
## How to Test
Steps to verify this works:
1. ...
2. ...
## Related
- Closes #123
- Related to #456
## Screenshots
(if applicable)
## Checklist
- [ ] Tests added/updated
- [ ] Documentation updated
- [ ] No breaking changes (or documented)
Reviewing Pull Requests
Anyone can review PRs (not just engineers). Non-technical reviews are valuable for:
- Documentation clarity
- User experience
- Business logic correctness
- Copy and messaging
How to review:
- Open PR
- Read description
- Check "Files changed" tab
- Click line numbers to add comments
- Submit review:
- Approve - Looks good, ready to merge
- Request changes - Issues that must be fixed
- Comment - Feedback without blocking
Good review feedback:
- Be specific: "This error message is unclear" not "This is confusing"
- Explain why: "Users won't understand 'auth token' – use 'login code' instead"
- Ask questions: "Why did we choose this approach?"
- Acknowledge good work: "Nice catch on that edge case"
Merging
Who can merge:
- PR author after approval from required reviewers
- Repository maintainers
Merge strategies:
- Squash and merge (preferred at Kyndof) - Combines commits into one
- Merge commit - Keeps all commits, creates merge commit
- Rebase and merge - Linear history
After merging:
- Delete the feature branch (keeps repo clean)
- Linked issues auto-close if PR description said "Closes #123"
- CI/CD may auto-deploy to staging/production
Issues and Project Tracking
Creating Good Issues
Issues track bugs, features, and tasks.
Issue template:
**What**
Clear description of issue or feature
**Why**
Business context or impact
**Acceptance Criteria**
- [ ] Criterion 1
- [ ] Criterion 2
**Additional Context**
Screenshots, links, examples
Issue best practices:
- Use descriptive titles: "Fix: Login button not working on mobile" not "Bug"
- Add labels:
bug,feature,documentation,p0-critical, etc. - Assign to appropriate person or team
- Link related issues and PRs
- Add to project board if part of larger initiative