Project structure
The Octopus repo is the catalog of primitives plus the generation machinery that delivers them. The file tree is the architecture β each top-level directory is a category of configurable content.
The tree
octopus/βββ agents/ # Per-agent capability manifestsβ βββ claude/ # manifest.yml + CLAUDE.md template + settings.json templateβ βββ copilot/ # manifest.yml + header.mdβ βββ codex/ # manifest.yml + header.mdβ βββ gemini/ # manifest.yml + header.mdβ βββ opencode/ # manifest.yml + header.mdββββ bundles/ # Curated bundle definitionsβ βββ starter.yml # The foundation β always recommendedβ βββ quality.yml # Pre-merge audit gatesβ βββ docs.yml # Full doc lifecycleβ βββ backend.yml # Stack-aware backend patternsβ βββ growth.yml # Multi-channel launch kitsββββ core/ # Universal standards (no opt-out)β βββ guidelines.mdβ βββ architecture.mdβ βββ commit-conventions.mdβ βββ pr-workflow.mdβ βββ task-management.mdββββ rules/ # Language and topic rulesβ βββ common/ # Always loaded β coding-style, patterns, security, testing, quality, languageβ βββ csharp/β βββ typescript/β βββ python/ββββ skills/ # 35 reusable capabilitiesβ βββ implement/ # SKILL.md + optional REFERENCE.md + tests/β βββ debug/β βββ audit-all/β βββ ...ββββ hooks/ # Claude Code lifecycle hooksβ βββ pre-tool-use/ # destructive-guard, detect-secrets, β¦β βββ post-tool-use/ # auto-format, typecheck, console-log-warnβ βββ session-start/ # load-contextβ βββ stop/ # propose-knowledge-updateβ βββ hooks.json # Hook registration manifestββββ commands/ # 40 slash command definitionsβ βββ commit.mdβ βββ pr-open.mdβ βββ release.mdβ βββ ...ββββ roles/ # 6 agent personasβ βββ _base.md # Shared role frontmatterβ βββ architect.mdβ βββ backend-developer.mdβ βββ frontend-developer.mdβ βββ product-manager.mdβ βββ tech-writer.mdβ βββ marketer.mdββββ knowledge/ # Modular domain knowledge templatesβ βββ _template/ # Empty bootstrap shapeβ βββ _examples/ # Reference examplesββββ mcp/ # MCP server configurationsβ βββ notion.jsonβ βββ github.jsonβ βββ slack.jsonβ βββ postgres.jsonββββ templates/ # Document templates (RFC, Spec, ADR)βββ cli/ # CLI sources (bash + Python)βββ bin/ # Compiled / global CLI shimsβββ docs/ # Project documentation (this site's source)βββ tests/ # Bash test suiteβββ setup.sh # The generatorβββ .octopus.example.yml # Sample manifestReading the tree
Three rules make the tree navigable:
- One directory per primitive.
skills/,commands/,hooks/,roles/,rules/,bundles/. The category is in the path. - One subdirectory per instance. Each skill is
skills/<name>/with its ownSKILL.md. Each bundle is one YAML. Each hook is one shell script under the right phase directory. The instance name is in the path. - No cross-category files. A skill never lives under
commands/, a hook never lives underskills/. The category boundary is enforced by where the file is, not by its content.
What lives outside the tree (in user projects)
The Octopus repo is the catalog. User projects consume the catalog
by referencing it from their .octopus.yml. After running
octopus setup, the user project gets:
user-project/βββ .octopus.yml # The only file the user editsβββ .octopus/ # Runtime state (gitignored)βββ .claude/CLAUDE.md # Generatedβββ .claude/settings.json # Generatedβββ .claude/rules/ # Generated (symlinks to Octopus)βββ .claude/skills/ # Generated (symlinks to Octopus)βββ .claude/commands/ # Generated (symlinks to Octopus)βββ .claude/agents/ # Generated (roles, symlinked)βββ .github/copilot-instructions.md # Generatedβββ AGENTS.md # Generated for Codexβββ GEMINI.md # Generated for Geminiβββ .opencode/ # Generated for OpenCodeAll generated files are gitignored β the source of truth is
.octopus.yml plus the Octopus catalog version. Regenerate at
any time with octopus setup.