main-only-development
Skill0 starsChanged 8 days agoApache-2.0View on GitHub
Use when a development session starts or performs Git work in the top-level Solo Empire repository, especially when branches or worktrees need to be consolidated.
- Deletes or force-pushes
In this repository27 other files it gives its agents.
- ai-agentsSkill
- ai-agent-workflowsSkill
- ai-native-estimationSkill
- ai-product-deliverySkill
- book-dev-engineering-loopSkill
- business-analysisSkill
- client-discovery-and-proposalsSkill
- content-distributionSkill
- data-engineeringSkill
- flow-videoSkill
- game-engineeringSkill
- govern-ai-skillsSkill
- graphic-designSkill
- lead-research-and-crmSkill
- product-managementSkill
- product-ownerSkill
- project-managementSkill
- qa-testingSkill
- security-and-privacySkill
- skill-templateSkill
- solo-empire-operatorSkill
- solution-architectureSkill
- subagent-orchestrationSkill
- system-docpackSkill
- unused-file-cleanupSkill
- ux-reviewSkill
- xr-engineeringSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 9 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 10
Start development in the top-level Solo Empire repository on main and keep working there.
- Distinctive: line 13
After cleanup, continue every new task directly on main.
- Very specific: line 26
After the inventory, run git fetch origin --prune when the remote is reachable so remote-tracking refs are current.
- Distinctive: line 29
Start new work on main. If an existing session is on another branch, switch only after step 1 confirms its work is safe and retained.
- Distinctive: line 33
Treat any non-main branch already present as cleanup.
- Distinctive: line 38
Treat staged, unstaged, untracked, ignored, stashed, and other-worktree changes as separate work from branch commits.
- Distinctive: line 62
Keep ignored runtime data out of commits.
- Distinctive: line 63
Never use git reset --hard, git clean, or force-push to make the branch list look clean.
- Distinctive: line 64
Do not delete an attached worktree or a branch with unmerged commits or unidentified work.
- Distinctive: line 65
Do not use root-repository instructions to change branches in nested repositories.
- Very specific: line 70
After integration, confirm the root checkout is on main, the only local branch is main, the only remote branch is origin/main, origin/HEAD …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Main-Only Development
Overview
Start development in the top-level Solo Empire repository on main and keep
working there. Merging is a one-time cleanup for non-main branches that already
exist; it restores the intended state and is not the normal development flow.
After cleanup, continue every new task directly on main. This policy does not
apply to nested repositories; follow their own instructions and preserve their
independent Git boundaries.
Workflow
- Confirm the repository root, then inspect
git status --short --branch,git branch --all --verbose, andgit worktree list --porcelainbefore any Git mutation. Rungit -C <worktree-path> status --short --branchfor every listed worktree. Before any merge, branch switch, branch-ref deletion, or worktree removal, inspect the staged and unstaged diffs, untracked paths, and relevant ignored files in every worktree. Do not proceed until all pending work is identified and retained; do not expose sensitive file contents. - After the inventory, run
git fetch origin --prunewhen the remote is reachable so remote-tracking refs are current. Pruning removes stale local tracking refs; it does not delete branches fromorigin. - Start new work on
main. If an existing session is on another branch, switch only after step 1 confirms its work is safe and retained. Do not create feature branches or extra worktrees for ordinary development; commit only scoped files onmain. - Treat any non-main branch already present as cleanup. Inspect its commits
and file changes against
main, integrate the intended changes once, and resolve conflicts by preserving both intended changes. Verify the changes are present inmainbefore removing the local ororiginref; check commit ancestry for regular merges and patch content for squash or cherry-pick. - Treat staged, unstaged, untracked, ignored, stashed, and other-worktree changes as separate work from branch commits. Preserve them. If switching, merging, deleting a ref, or removing a worktree could affect work that has not been identified and retained, stop and ask the user how to handle it.
- Push only
maintooriginwhen the scoped changes are ready and the repository's approval and verification requirements are satisfied. If branch protection or a required review workflow conflicts with main-only development, stop and explain the conflict before creating any temporary branch or pull request flow.
Product clones, TDD and autopilot
Product clones in the Big Loop also work main-only, by their own README.
There, ADR-0004 TDD runs on main: the failing-test commit comes first, its
red run is checked locally, and red and green are pushed together, never red
alone; no squash or force-push after the red/green log. The autopilot in
productivity-tracking-web/.autopilot/ is the one place with short-lived
autopilot/* branches, merged locally by the loop. Details:
references/tdd-and-autopilot-on-main.md.
Decision rules
- A stale branch shown by an app is not proof that the Git ref still exists; inspect the repository and refresh the app after cleanup.
- A stash is not a branch. Do not pop, drop, or create stashes as branch cleanup.
- Keep ignored runtime data out of commits. Preserve it outside any worktree that must be removed; ask if the safe destination is unclear.
- Never use
git reset --hard,git clean, or force-push to make the branch list look clean. - Do not delete an attached worktree or a branch with unmerged commits or unidentified work.
- Do not use root-repository instructions to change branches in nested repositories.
- Merge locally and push; never
gh pr mergeunless the owner asks.
Verify
After integration, confirm the root checkout is on main, the only local branch
is main, the only remote branch is origin/main, origin/HEAD points to
origin/main, and main matches origin/main after a successful push. Use
git ls-remote --heads origin to verify the actual remote has no other branch
heads; if the remote is unavailable, report that check as unverified. Confirm
that any extra worktrees or stashes were preserved unless their contents were
explicitly handled.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

