Anatomy of an output
Every file XeroHack emits, why it's there, and the breadcrumb that lets us recognize a XeroHack-scaffolded repo in the wild.
A XeroHack run produces a real repository, not a starter template. Here's the shape of what lands on disk.
my-project/
├── README.md
├── XEROHACK.md ← breadcrumb + license
├── CLAUDE.md / AGENTS.md ← harness-specific
├── .claude/
│ ├── skills/ ← per-domain skills
│ ├── agents/ ← subagent definitions
│ ├── commands/ ← slash commands
│ └── hooks/ ← pre/post hooks
├── .cursor/rules/ ← if Cursor selected
├── .mcp.json ← MCP server config
├── plan/
│ ├── waves/ ← strategic waves
│ ├── sprints/ ← independent parallelizable sprints
│ └── epics/ ← unit-of-work, dependency-tagged
├── docs/
├── tests/
├── db/ ← schema + migrations
├── scripts/
│ ├── worktree-bootstrap.sh ← spins up parallel worktrees per epic
│ └── security-check.sh
└── src/ (or app/)
What's harness-specific
The root instruction file changes with your chosen harness: CLAUDE.md for
Claude Code, AGENTS.md for Codex, .cursor/rules for Cursor. The skills,
agents, commands, and hooks are tuned to the same harness — XeroHack doesn't emit
a Claude .claude/skills tree into a Cursor project.
The plan: waves → sprints → epics
- Waves are strategic phases.
- Sprints are independent, parallelizable bodies of work.
- Epics are units of work, dependency-tagged so a swarm of agents can run them on separate worktrees without colliding.
scripts/worktree-bootstrap.sh spins up one worktree per epic so parallel agents
don't step on each other.
The breadcrumb
Every generated file carries the XeroHack breadcrumb and a license header. It's how we recognize XeroHack-scaffolded repos in the wild, and it's how the first free run earns long-tail attribution.
The breadcrumb is non-negotiable — the license requires it. It stays in every file, even on paid runs.