The collaboration model
- One person creates the repo — under their personal account to start, or directly under a GitHub organisation (recommended for team work).
- GitHub Pages is enabled — deploy from the
mainbranch, root directory (/). This means every file at the top level of the repo is served as a webpage. Every merge to main triggers a publish automatically. - Team members are added with appropriate roles — Write for contributors, Maintain for whoever is responsible for merging.
- Branch protection is turned on — no direct pushes to main, pull requests required, at least one review before merge.
- Each person (or their agentic app) works in a named branch — drafts and commits stay isolated until a pull request is raised.
- A human reviews and merges the pull request — the final checkpoint before anything goes live.
Org-owned repos vs personal repos
When you first create a GitHub repo it defaults to your personal account. That's fine for solo work, but for anything the team owns together, an org-owned repo is the right choice.
Personal repo
- Lives under
github.com/your-username - You are the only admin by default
- If you leave the team, ownership transfer is manual
- Fine for learning and personal projects
Org-owned repo
- Lives under
github.com/your-org - Survives individual staff changes — the org owns it
- Team-level permissions, not person-by-person
- Recommended for any shared team microsite
Creating a repo under a GitHub organisation
You can ask your agentic app to walk you through this. Try: "Help me create a new repository under my GitHub organisation on github.com and enable GitHub Pages." It will guide you through each step or do it via the GitHub API if it has access.
▶ Do it manually instead
- Go to github.com, click the + icon (top right) → New repository.
- In the Owner dropdown, switch from your personal account to your org. If the org doesn't exist yet: profile menu → Your organisations → New organisation.
- Name the repo, set visibility to Internal (all organisation members) or Private (invite-only), and initialise with a README.
- Go to Settings → Pages, set the source to the
mainbranch and/ (root)directory, and save.
Adding members and setting roles
There are two ways to give someone access to an org repo: add them as an org member (access across all org repos) or as an outside collaborator on a specific repo (recommended for people outside your immediate team).
Within a repo, each person gets one of five roles:
| Role | What they can do | Recommended for |
|---|---|---|
| Read | View and clone the repo, comment on issues and pull requests | Stakeholders who need visibility but won't contribute |
| Triage | Read + manage issues and pull requests (no push access) | Project managers tracking work without editing files |
| Write Recommended | Push to non-protected branches, open and merge pull requests (where protection allows) | Team members contributing content via their agentic app |
| Maintain Recommended | Everything in Write + manage branch protection, merge pull requests, manage releases | The person responsible for final merges and deployments |
| Admin Restrict | Full control including deleting the repo, changing visibility, bypassing all protections | Org owners only — avoid granting casually |
How to add a collaborator
▶ Show steps
- Go to your repo → Settings → Collaborators and teams.
- Click Add people (individuals) or Add teams (entire org team — preferred at scale).
- Search by username or email, select the person, choose their role.
- They'll receive an invitation email and must accept before gaining access.
Governance — who controls what gets published
The most important governance decision: no one pushes directly to main. Every change goes through a pull request. This applies equally to humans and to agentic apps acting on their behalf.
Setting up branch protection on main
- Go to Settings → Branches → Add branch protection rule.
- Set the branch name pattern to
main. - Enable Require a pull request before merging. Set Required approvals to 1.
- Enable Do not allow bypassing the above settings — prevents admins from pushing around the rules.
- Save. Nobody — human or agentic app — can push directly to main.
CODEOWNERS — auto-assign reviewers by section
As the site grows, different people own different pages. A CODEOWNERS file tells GitHub who to automatically request a review from when a particular file changes — no one has to remember to tag anyone.
Your agentic app can create and maintain this file for you. Just say: "Create a CODEOWNERS file so that changes to mcps-read.html require a review from @colleague-username, and everything else defaults to me." The file lives at .github/CODEOWNERS and looks like this:
# Default owner for all files * @your-username # A colleague owns the MCPs section mcps-read.html @colleague-username mcp-setup.html @colleague-username
When a pull request touches mcps-read.html, GitHub automatically adds the colleague as a required reviewer. You never need to edit this file manually — ask your agentic app to update it whenever ownership changes.
Contributing without HTML knowledge
Contributors don't need to touch HTML. Their agentic app handles file editing — they just describe what they want.
Step-by-step: adding content to the site
- Open the repo in your agentic app — most agentic apps (including desktop-based ones) let you open a folder from a cloned repo, or can connect directly to a GitHub repo URL. Ask your agentic app: "How do I open a GitHub repo so you can edit files in it?" for the right steps in your specific tool.
- Ask your agentic app to create a branch — start every session with: "Create a new branch called
feature/your-name-topicand switch to it." - Describe the content you want — e.g. "Add a new section to skills.html explaining how to use Skills to wrap Webex workflows. Match the existing style."
- Review the result — open the file in a browser locally to check it looks right before committing.
- Ask your agentic app to commit and push — "Commit these changes with a short message and push to origin."
- Open a pull request — go to the repo on GitHub. It will prompt you to create a pull request from your new branch. Add a short description of what you changed.
- Wait for review and merge — the maintainer reviews and merges. The site updates within ~60 seconds.
Agentic collaboration conflicts
What happens when two people using an agentic app try to update the same site at the same time? Unlike Google Docs, there's no real-time presence indicator. Here's what actually happens — and how branch protection prevents problems.
Without branch protection: direct pushes to main
skills.html and pushes to main at 2:01pm.skills.html from an earlier starting point. It tries to push to main at 2:03pm.With branch protection: each session in its own branch
Session A — branch: feature/gus-collab-page
- Edits
github-pages-collab.html - Commits and pushes to its own branch
- Opens pull request — no conflict
Session B — branch: feature/ali-skills-update
- Edits
skills.html - Commits and pushes to its own branch
- Opens pull request — no conflict
Both pull requests exist simultaneously. A human reviews each one and merges in sequence. Both sets of changes land on main cleanly. No conflict. No override.
The only time a conflict surfaces is if both sessions edited the same lines in the same file. In that case, GitHub shows a merge conflict warning on the pull request before merge — making it visible and requiring a human to resolve it before anything goes live.
Who has final say?
With branch protection enabled: the person who clicks Merge on the pull request. No agentic tool can deploy to the live site unilaterally — the deploy gate is always a human action.
Best practices to prevent conflicts
Tell your agentic app at the start of every session: "Create a new branch called feature/your-name-topic before making any changes."
Use feature/gus-agentic-conflicts not feature/update. It's immediately clear who is working on what.
One topic per pull request. Touching fewer files means less chance of conflicting with another contributor's work.
Include what your agentic app was doing and why. A useful pattern: paste the key prompt you used as the description.
Turn off GitHub's auto-merge feature for content sites. A human should make a conscious decision before each deploy.
If you're about to rewrite an entire section, a quick message to the team ("working on the MCPs section today") prevents overlap.
Questions or edge cases not covered here? , or ask your agentic app to help you think through your specific situation.