Skip to content

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 manifest

Reading 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 own SKILL.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 under skills/. 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 OpenCode

All generated files are gitignored β€” the source of truth is .octopus.yml plus the Octopus catalog version. Regenerate at any time with octopus setup.

Source: repo tree