Skip to content

Copier update: pyrefly, .config/ layout, Task workflows - #26

Merged
ejfine merged 8 commits into
mainfrom
cop-volume
Oct 7, 2026
Merged

ejfine merged 8 commits into
mainfrom
cop-volume

Conversation

@ejfine

@ejfine ejfine commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Link to Issue or Message thread

N/A — routine update from copier-base-template.

Why is this change necessary?

Pulls in the latest copier-base-template changes. Upstream moved tool configs into .config/, added Task-based workflows (Taskfile.yaml + .config/taskfiles/), replaced pyright and ty with pyrefly, and refreshed the Claude settings, skills and devcontainer tooling. Several of this template's customizations conflicted with those changes and had to be reapplied by hand. Switching type checkers also broke instantiation: the pyright_version and ty_version context variables no longer exist.

How does this change address the issue?

  • Copier update: applies the upstream changes as-is.
  • Rejected hunks reapplied:
    • template/README.md.jinja: restores the templated repo_org_name/repo_name badges and the Frontend and Infrastructure Deployments sections, and drops the template-repo-only "Usage" section. Keeps upstream's Task paragraph and task copier-update.
    • template/.devcontainer/docker-compose.yml.jinja: restores the per-project venv volumes (graphql_lambda when has_backend, infrastructure) plus the pnpm_store and node_modules volumes and the postgres service, on top of upstream's new mount and BEADS settings.
    • copier.yml: restores the task that strips the graphql_lambda pre-commit hooks when has_backend is false.
  • Type checking moved to pyrefly:
    • The root pyrefly hook is replaced with per-project pyrefly-graphql-lambda and pyrefly-infrastructure hooks. Each runs in its own uv project against src tests, using the shared .config/pyrefly.toml. That config's project-includes was removed, because running from inside a project's directory made pyrefly also check that project's .venv.
    • The pyright/ty dev dependencies are swapped for pyrefly in both subproject pyproject.toml.jinja files.
    • The new pyrefly errors in the infrastructure code are fixed: concrete stack-config value types instead of Any, an explicit None check for the MIME-type fallback, a typed aliases list, and removal of the stale # pyright: ignore.
  • Fixes found along the way:
    • The postgres service is now gated only on has_backend. It used to sit inside the install_claude_cli block, so backend repos without the Claude CLI got no database.
    • The answers-file template moved to template/.config/.copier-answers.yml.jinja to match _answers_file. Previously copier never updated _commit in downstream repos.

What side effects does this change have?

N/A

How is this change tested?

Downstream repo

ejfine and others added 8 commits October 1, 2026 13:07
Pull in upstream changes (config files moved to .config/, Task-based workflows, pyrefly replacing pyright/ty) and resolve the rejected hunks:

- Restore templated badges and Frontend/Infrastructure sections in template README
- Restore per-project venv, pnpm store and node_modules volumes and the postgres service in the devcontainer compose template
- Replace the root pyrefly hook with per-project graphql_lambda and infrastructure pyrefly hooks
- Restore the task that strips graphql_lambda hooks when has_backend is false
- Swap pyright/ty dev dependencies for pyrefly in the infrastructure and graphql_lambda pyproject templates
The postgres service was nested inside the install_claude_cli block, so repos with a backend but without the Claude CLI got no database while still declaring the postgres_data volume.
Passing '.' made pyrefly type-check the project's .venv (12k+ files), so the
hook ran for minutes and got killed. Drop project-includes from the shared
config since each hook passes its own project's paths.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
_answers_file points at .config/.copier-answers.yml, but the answers
template still lived at the template root, so copier never updated
_commit in downstream repos and later updates reapplied old changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…types

Stack config values are only str or ConfigValue, so pyrefly's explicit-any
rule no longer needs to fire.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ram.py

Use an explicit None check for the mime type fallback, and build the
CloudFront aliases list inside the existing ACM-cert branch instead of a
ternary with an untyped empty list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pyright is no longer used and pyrefly reports no error on this line.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 224 files, which is 124 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration

Configuration used: Repository: LabAutomationAndScreening/copier-nuxt-static-aws/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: b8d8c807-c9ce-458b-b4dc-22c48fce49e6

📥 Commits

Reviewing files that changed from the base of the PR and between d357626 and 715fc05.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (224)
  • .claude/.beads/.gitignore
  • .claude/.beads/config.yaml
  • .claude/commands/add-command.md
  • .claude/commands/commit.md
  • .claude/commands/create-adr.md
  • .claude/commands/create-issues.md
  • .claude/commands/gap.md
  • .claude/commands/green.md
  • .claude/commands/issue.md
  • .claude/commands/polish.md
  • .claude/commands/red.md
  • .claude/commands/refactor.md
  • .claude/commands/research.md
  • .claude/commands/simplify.md
  • .claude/commands/spike.md
  • .claude/commands/summarize.md
  • .claude/commands/tdd-review.md
  • .claude/commands/tdd.md
  • .claude/helpers/merge-claude-settings.sh
  • .claude/hooks/bash-chain-guard.js
  • .claude/hooks/caveman-activate.js
  • .claude/hooks/caveman-config.js
  • .claude/hooks/caveman-mode-tracker.js
  • .claude/settings/basics.jsonc
  • .claude/settings/hooks.jsonc
  • .claude/settings/models.jsonc
  • .claude/settings/permissions/additional-dirs.jsonc
  • .claude/settings/permissions/bash.jsonc
  • .claude/settings/permissions/edit.jsonc
  • .claude/settings/permissions/read.jsonc
  • .claude/settings/permissions/write.jsonc
  • .claude/skills/address-pr-comments/SKILL.md
  • .claude/skills/address-pr-comments/check-footer.py
  • .claude/skills/address-pr-comments/commit-link.py
  • .claude/skills/address-pr-comments/fetch-pr-comments.py
  • .claude/skills/address-pr-comments/post-reply.py
  • .claude/skills/address-pr-comments/utils.py
  • .claude/skills/address-pr-comments/verify-env.py
  • .claude/skills/caveman/SKILL.md
  • .claudeignore
  • .coderabbit.yaml
  • .config/.copier-answers.yml
  • .config/.copier-managed-files.json
  • .config/.coveragerc
  • .config/.prettierrc
  • .config/_typos.toml
  • .config/pylintrc.toml
  • .config/pyrefly.toml
  • .config/ruff-non-src.toml
  • .config/ruff.toml
  • .config/taskfiles/copier-template.yaml
  • .devcontainer/Dockerfile
  • .devcontainer/create-aws-profile.sh
  • .devcontainer/devcontainer.json
  • .devcontainer/docker-compose.yml
  • .devcontainer/initialize-command.sh
  • .devcontainer/install-ci-tooling.py
  • .devcontainer/manual-setup-deps.py
  • .devcontainer/on-create-command-boilerplate.sh
  • .devcontainer/on-create-command.sh
  • .devcontainer/post-start-command.sh
  • .devcontainer/windows-host-helper.sh
  • .github/CODE_OF_CONDUCT.md
  • .github/CONTRIBUTING.md
  • .github/ISSUE_TEMPLATE/bug-report.yml
  • .github/ISSUE_TEMPLATE/config.yml
  • .github/ISSUE_TEMPLATE/feature-request.yml
  • .github/ISSUE_TEMPLATE/tech-debt.yml
  • .github/actions/check-skip-duplicates/action.yml
  • .github/actions/install_deps/action.yml
  • .github/actions/update-devcontainer-hash/action.yml
  • .github/dependabot.yml
  • .github/pull_request_template.md
  • .github/reusable_workflows/build-docker-image.yaml
  • .github/workflows/ci.yaml
  • .github/workflows/confirm-on-tagged-copier-template.yaml
  • .github/workflows/get-values.yaml
  • .github/workflows/hash_git_files.py
  • .github/workflows/pre-commit.yaml
  • .github/workflows/replace_private_package_registries.py
  • .github/workflows/tag-on-merge.yaml
  • .github/zizmor.yml
  • .gitignore
  • .pre-commit-config.yaml
  • AGENTS.md
  • CHANGELOG.md
  • CLAUDE.md
  • LICENSE
  • README.md
  • Taskfile.yaml
  • biome.jsonc
  • copier-nuxt-static-aws.code-workspace
  • copier.yml
  • copier_template_resources/eslint.config.mjs
  • copier_template_resources/eslint/eslint.shared.mjs
  • copier_template_resources/eslint/istanbul-ignore-if-must-throw.mjs
  • copier_template_resources/eslint/istanbul-ignore-if-must-throw.spec.ts
  • copier_template_resources/openapi_schema_simplifier.py
  • extensions/context.py
  • pyproject.toml
  • pyrightconfig.json
  • pytest.ini
  • scripts/delete_false_positive_rej.py
  • sh.bat
  • src/copier_tasks/__init__.py
  • src/copier_tasks/copier_provenance.py
  • src/copier_tasks/ensure_pnpm_minimum_release_age_exclude.py
  • src/copier_tasks/normalize_pnpm_minimum_release_age_exclude.py
  • src/copier_tasks/remove_precommit_hooks.py
  • template/.claude/.beads/.gitignore
  • template/.claude/.beads/config.yaml
  • template/.claude/commands/add-command.md
  • template/.claude/commands/commit.md
  • template/.claude/commands/create-adr.md
  • template/.claude/commands/create-issues.md
  • template/.claude/commands/gap.md
  • template/.claude/commands/green.md
  • template/.claude/commands/issue.md
  • template/.claude/commands/polish.md
  • template/.claude/commands/red.md
  • template/.claude/commands/refactor.md
  • template/.claude/commands/research.md
  • template/.claude/commands/simplify.md
  • template/.claude/commands/spike.md
  • template/.claude/commands/summarize.md
  • template/.claude/commands/tdd-review.md
  • template/.claude/commands/tdd.md
  • template/.claude/helpers/merge-claude-settings.sh
  • template/.claude/hooks/bash-chain-guard.js
  • template/.claude/hooks/caveman-activate.js
  • template/.claude/hooks/caveman-config.js
  • template/.claude/hooks/caveman-mode-tracker.js
  • template/.claude/settings/basics.jsonc
  • template/.claude/settings/hooks.jsonc
  • template/.claude/settings/models.jsonc
  • template/.claude/settings/permissions/additional-dirs.jsonc
  • template/.claude/settings/permissions/bash.jsonc
  • template/.claude/settings/permissions/edit.jsonc
  • template/.claude/settings/permissions/read.jsonc
  • template/.claude/settings/permissions/write.jsonc
  • template/.claude/skills/address-pr-comments/SKILL.md
  • template/.claude/skills/address-pr-comments/check-footer.py
  • template/.claude/skills/address-pr-comments/commit-link.py
  • template/.claude/skills/address-pr-comments/fetch-pr-comments.py
  • template/.claude/skills/address-pr-comments/post-reply.py
  • template/.claude/skills/address-pr-comments/utils.py
  • template/.claude/skills/address-pr-comments/verify-env.py
  • template/.claude/skills/caveman/SKILL.md
  • template/.claude/skills/fix-mutants/SKILL.md
  • template/.claude/skills/fix-mutants/check-results.py
  • template/.claude/skills/fix-mutants/group-by-line.py
  • template/.claude/skills/fix-mutants/list-survived.py
  • template/.claude/skills/fix-mutants/run-mutmut.py
  • template/.claude/skills/fix-mutants/show-mutant.py
  • template/.claude/skills/fix-mutants/utils.py
  • template/.claude/skills/fix-mutants/verify-mutant.py
  • template/.coderabbit.yaml
  • template/.config/.copier-answers.yml.jinja
  • template/.config/.coveragerc
  • template/.config/.prettierrc
  • template/.config/_typos.toml
  • template/.config/pylintrc.toml
  • template/.config/pyrefly.mutmut.toml
  • template/.config/pyrefly.toml
  • template/.config/ruff-non-src.toml
  • template/.config/ruff.toml
  • template/.config/taskfiles/copier-template.yaml
  • template/.devcontainer/Dockerfile
  • template/.devcontainer/devcontainer.json.jinja
  • template/.devcontainer/docker-compose.yml.jinja
  • template/.devcontainer/initialize-command.sh
  • template/.devcontainer/install-ci-tooling.py.jinja
  • template/.devcontainer/install-pulumi-cli.sh
  • template/.devcontainer/manual-setup-deps.py
  • template/.devcontainer/on-create-command-boilerplate.sh
  • template/.devcontainer/on-create-command.sh.jinja
  • template/.devcontainer/post-start-command.sh.jinja
  • template/.devcontainer/windows-host-helper.sh
  • template/.github/CONTRIBUTING.md
  • template/.github/ISSUE_TEMPLATE/bug-report.yml
  • template/.github/ISSUE_TEMPLATE/config.yml
  • template/.github/ISSUE_TEMPLATE/feature-request.yml
  • template/.github/ISSUE_TEMPLATE/tech-debt.yml
  • template/.github/actions/check-skip-duplicates/action.yml
  • template/.github/actions/comment_pull_request/action.yml
  • template/.github/actions/install_deps/action.yml
  • template/.github/actions/pulumi_ephemeral_deploy/action.yml
  • template/.github/actions/update-devcontainer-hash/action.yml
  • template/.github/dependabot.yml.jinja
  • template/.github/pull_request_template.md
  • template/.github/workflows/ci.yaml.jinja
  • template/.github/workflows/confirm-on-tagged-copier-template.yaml
  • template/.github/workflows/get-values.yaml
  • template/.github/workflows/hash_git_files.py
  • template/.github/workflows/pre-commit.yaml
  • template/.github/workflows/pulumi-aws.yml
  • template/.github/{% if is_open_source %}CODE_OF_CONDUCT.md{% endif %}
  • template/.gitignore
  • template/.pre-commit-config.yaml
  • template/AGENTS.md
  • template/CHANGELOG.md
  • template/CLAUDE.md
  • template/README.md.jinja
  • template/Taskfile.yaml.jinja
  • template/biome.jsonc
  • template/infrastructure/pyproject.toml.jinja
  • template/infrastructure/src/infrastructure/program.py
  • template/infrastructure/src/infrastructure/pulumi_deploy.py.jinja
  • template/pyrightconfig.json
  • template/pytest.ini
  • template/scripts/delete_false_positive_rej.py
  • template/sh.bat
  • template/ty.toml
  • template/{% if has_backend %}graphql_lambda{% endif %}/pyproject.toml.jinja
  • tests/__init__.py
  • tests/conftest.py
  • tests/copier_data/data1.yaml
  • tests/copier_data/data2.yaml
  • tests/unit/copier_tasks/__init__.py
  • tests/unit/copier_tasks/helpers.py
  • tests/unit/copier_tasks/test_copier_provenance.py
  • tests/unit/copier_tasks/test_ensure_pnpm_minimum_release_age_exclude.py
  • tests/unit/copier_tasks/test_remove_precommit_hooks.py
  • ty.toml

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ejfine
ejfine requested a review from zendern October 1, 2026 14:43
@ejfine
ejfine marked this pull request as ready for review October 1, 2026 14:43
@ejfine
ejfine merged commit 91c3195 into main Oct 7, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants