Copier template for creating new 33GOD ecosystem components with BMAD methodology, Plane ticket enforcement, and multi-agent development tooling.
- Language Support: Python, TypeScript, Rust
- Event-Driven Architecture: Optional Bloodbank integration
- Plane Integration:
.project.jsonfor ticket management and project config - Ticket Enforcement: Git hooks enforce Plane ticket requirements
- Code Review:
.github/workflows/code-review.ymlreviews every pull request (see Code Review) - [TODO] BMAD Integration: Full BMAD methodology structure by auto running
npx bmad-method@latest install - [TODO] Multiple-choice selection for different workflows: BMAD, GSD, GoogleAgentSkills, None.
- Containerization: Optional Docker + Docker Compose
- GOD Documentation: Auto-generated component documentation
- Environment Management: mise.toml +
.envfor reproducible environments - 1password Secret Value Ready
- Multi-Agent Tooling: Pre-configured prompts for Claude, Augment, OpenCode, Gemini, Codex, Copilot, Kimi
# Install Copier
uv tool install copier
# Or with pip
pip install copier
# Set up Plane API key (for automated project creation)
export PLANE_API_KEY="your-plane-api-key"
OR
[TODO] export PLANE_API_KEY=op://VaultName/Key/Field
# Get from: https://plane.delo.sh/<workspace>/settings/api-tokens/[TODO] One command handles everything: Plane project creation + Copier template:
TASK - Implement the following: Currently, I have to run
copier copy --trust ~/code CommonProject .globally, ormise run init-projectwhile in the CommonProject source dir - but this is not ideal. I would rather runcommonProject .globally.
# Interactive wizard - creates Plane project automatically
mise run init-project
# Or non-interactive (uses defaults)
mise run init-project-non-interactive
# With custom template
./scripts/init-project.sh --template gh:delorenj/CommonProjectThe wizard will:
- Ask for project details (name, description, type)
- Create the Plane project automatically
- Run Copier with all answers pre-filled
- Output next steps
# Create new project from template
copier copy gh:delorenj/CommonProject my-new-project
# Or from local template
copier copy /path/to/CommonProject my-new-project
# Answer the interactive questions
# Project will be generated in ./my-new-project/The template asks for:
- Project Name: Display name (e.g., "HoloCron", "VernonVoice")
- Project Slug: Directory/package name (auto-generated from name)
- Description: One-sentence project description
- Workspace: Plane workspace slug (default: 33god)
- Project Name
- Project Identifier: 2+ character ticket prefix (e.g., HOLO, VERN)
Tip: If you used
mise run init-project, most of this is done automatically!
-
Initialize Environment
cd my-new-project cp project.env.example .env # Edit .env with actual values (API keys, service URLs) mise trust
-
Initialize Git
git init git add . git commit -m "Initial commit from template"
-
Create Plane Ticket
# Create ticket in Plane (or it was already created for you!) # Move to "In Progress" git checkout -b <IDENTIFIER>-123-initial-setup
-
Start Development
# With Docker docker compose up -d # Without Docker (Python example) mise run dev
Every generated project ships .github/workflows/code-review.yml. It is
unconditional — there is no template question to answer and no flag to forget —
so a new project has pull-request review from its first PR.
The workflow runs anthropics/claude-code-action@v1
on pull_request (opened, synchronize, ready_for_review, reopened). It
deliberately does not use pull_request_target, which would expose repo
secrets to code from forked PRs.
The workflow does nothing until this secret exists. Without it the job still triggers, but the action has no credential and the run fails.
CLAUDE_CODE_OAUTH_TOKEN is a long-lived Claude Code OAuth/session token — not a
metered Anthropic API key. Provide it either way:
-
Org-level secret (preferred): set it once on the GitHub org and grant the new repo access. Generated repos inherit it with zero per-repo setup.
-
Repo-level secret:
Settings → Secrets and variables → Actions → New repository secret, nameCLAUDE_CODE_OAUTH_TOKEN. Or from the CLI:gh secret set CLAUDE_CODE_OAUTH_TOKEN --repo <owner>/<repo>
Generate the token with claude setup-token (Claude Code CLI).
The job requests exactly contents: read, pull-requests: read,
issues: read, and id-token: write — read-only on the repo, with OIDC for the
action's own auth exchange.
Copier supports updating projects when the template changes:
cd my-existing-project
copier update
# Or to a specific template version
copier update --vcs-ref=v1.2.0Root-level files describe the template itself. Files in template/ are what Copier renders into generated projects. See AGENTS.md for full development guidance.
# Run all template test scenarios
bash .scripts/test-template.sh
# Test a single scenario
copier copy . /tmp/test-project --overwrite- Add to
project_typechoices incopier.yml - Update conditional sections in
template/*.jinjafiles - Add type-specific questions if needed
- Update GOD.md template with type-specific content
- Add test case in
.scripts/test-template.sh
- Add to
primary_languagechoices incopier.yml - Create Dockerfile variant in templates
- Add mise.toml tasks
- Update AGENTS.md template with language-specific guidance