-
-
Notifications
You must be signed in to change notification settings - Fork 1
PR: Feature/markdown reference guardrail #4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This plan breaks down the design into 35 tasks across 6 phases: - Phase 1: Core infrastructure (logger + schema) - Phase 2: Generator integration (logging + Phase 1 cleanup) - Phase 3: Documentation updates (4 files) - Phase 4: Release scaffold enhancement - Phase 5: Workflow cleanup + npm scripts - Phase 6: Integration testing (5 test scenarios) Includes dependencies, testing steps, and validation criteria for each task. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ons.md link checks, update docs, and add latest audit report - Restricts forbidden *.instructions.md link checks to ## References/See Also headings in scripts/check-markdown-references.js - Updates screenshot.png.md to comply with new guardrail - Adds README.md and _index.instructions.md to .github/instructions/ - Includes only the latest audit report (2025-12-15-154025-frontmatter-audit.csv) per reporting policy - All tests and checks pass
Implements Phase 1 of logging and schema validation system:
- Logger module (scripts/lib/logger.js): JSON logging to logs/generate-theme-{{slug}}.log
- Mustache variables schema: Documents all 89 template variables with validation
- Schema validation test: 3-level validation (structure, known vars, registry sync)
All validation checks pass:
✓ Schema structure valid (JSON Schema draft-07)
✓ All known variables documented
✓ Registry synced with codebase (89 variables)
Related to implementation plan in docs/plans/2025-12-15-implementation-plan.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements Phase 2 of logging system:
**Logging Integration:**
- Start log: Created when generation begins (status: 'started')
- Success log: Created after successful generation (status: 'success')
- Error log: Created in catch block for failures (status: 'failure')
- Logs written to logs/generate-theme-{{slug}}.log
**Phase 1 Cleanup:**
- Automatically deletes scaffold-specific release files after generation:
- .github/agents/release-scaffold.agent.md
- .github/prompts/release-scaffold.prompt.md
- .github/instructions/release-scaffold.instructions.md
- docs/RELEASE_PROCESS_SCAFFOLD.md
- Generated themes are clean and ready for independent release process
**Error Handling:**
- Graceful fallback if logging fails (doesn't break generation)
- Uses optional chaining for placeholders in error scenarios
Related to implementation plan in docs/plans/2025-12-15-implementation-plan.md
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Implements Phase 5 of implementation plan: **NPM Scripts Added:** - `npm run test:schema` - Run mustache schema validation - `npm run validate:mustache` - Alias for schema validation **Workflow Cleanup:** - Deleted `.github/workflows/agent-generate-theme.yml` - Generation is local-only, no CI workflow needed **Testing:** ✓ npm run test:schema passes all 3 validation levels ✓ Schema structure valid ✓ Known variables documented ✓ Registry synced with codebase (89 variables) Related to implementation plan in docs/plans/2025-12-15-implementation-plan.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…rastructure Major refactoring to improve project organization and testing: - Reorganized agent scripts into scripts/agents/ directory - Added comprehensive test infrastructure with Jest setup - Created new schema files for frontmatter, plugin config, and theme validation - Added test documentation for Jest, PHPUnit, and Playwright - Implemented dry-run testing configuration - Added validation utilities and helpers - Created GitHub test infrastructure in .github/tests/ - Added frontmatter audit reports - Updated all agent files with corrected markdown references - Cleaned up legacy test files and consolidated structure 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
|
Caution Review failedThe pull request is closed. Note
|
| Cohort / File(s) | Summary |
|---|---|
Configuration & Formatting .babelrc.json, .devcontainer/devcontainer.json, .eslintrc.js, .lighthouserc.js, .npmpackagejsonlintrc.json, .npmrc, .stylelintignore, .wp-env.json, phpcs.xml |
Minor formatting updates (spacing normalization), removed resolution-mode=highest from .npmrc, expanded exclusion patterns in phpcs.xml, added .stylelintignore with coverage/build/vendor patterns |
Jest Configuration jest.config.js, scripts/__tests__/jest.config.js, .github/tests/jest.setup.localstorage.js |
Introduced localStorage setup, added moduleNameMapper for CSS/asset imports, extended setupFilesAfterEnv with new setup files, added output-theme and .github to testPathIgnorePatterns |
Schema Files (New) .github/schemas/frontmatter.schema.json, .github/schemas/mustache-variables-registry.schema.json, .github/schemas/plugin-config.schema.json, .github/schemas/theme.6.9.json, .github/instructions/block-json.schema.json |
Introduced JSON schemas for agent frontmatter (with permissions enum), WordPress block theme definitions, plugin configuration, mustache variables registry, and block.json validation |
Test Infrastructure & Helpers .github/__tests__/test-helper.js, .github/__tests__/README.md, .github/tests/setup.js, .github/tests/test-utils.js, .github/tests/README.md, .github/tests/test-logger.js |
New test helpers for Playwright (activateTheme, renderBlock), shared test utilities (retryOperation, assertWithLog, measureExecutionTime, createTestContext), and centralized logging infrastructure for Jest/PHPUnit/E2E |
Test Suites (Agents) scripts/agents/__tests__/* |
Comprehensive test suites for agents: block-theme-build, config, development-assistant, gemini, generate-theme, mustache-vars, release-scaffold, release, reporting, template |
Test Suites (Core) scripts/__tests__/agent-script.test.js, scripts/__tests__/audit-frontmatter.test.js, scripts/__tests__/generate-theme.test.js, scripts/__tests__/theme-schema.test.js, .test-temp/localstorage/localstorage.json, scripts/__tests__/test-audit/test.md |
Updated test files with formatting, new theme schema validation tests, removed audit-frontmatter test suite, deleted test-audit content |
Agent Scripts Reorganization scripts/agents/*.js, scripts/agents/README.md |
Reorganized into scripts/agents/ directory: generate-theme.agent.js (interactive CLI for theme generation), release-scaffold.agent.js (validation workflow), block-theme-build.agent.js (build orchestration), release.agent.js (release automation), reporting.agent.js (report generation), gemini.agent.js (Gemini AI integration), development-assistant.agent.js, template.agent.js |
Removed Scripts scripts/block-theme-build.agent.js, scripts/build.js, scripts/check-markdown-references.js, scripts/clean-github-references.js, scripts/dry-run-test.js |
Removed legacy agent, build orchestrator, reference validators, and dry-run test runner (functionality reorganized into agents) |
New Utilities scripts/dry-run-config.js, scripts/agent-script.js, scripts/agents/find-duplicates.js |
Introduced dry-run configuration system with mustache variable handling, agent script wrapper with environment masking, file duplicate detection utility |
Workflow Updates .github/workflows/agent-build.yml, .github/workflows/agent-release.yml, .github/workflows/agent-reporting.yml, .github/workflows/release-scaffold.yml (new), .github/workflows/agent-generate-theme.yml (removed), .github/workflows/theme-json-validate.yml (new) |
Added release-scaffold and theme-json-validate workflows, updated script paths to agents/ directory, added preflight guard in agent-release to prevent scaffold workflows in generated themes, removed agent-generate-theme workflow |
Agent Specs .github/agents/*.agent.md |
Added permissions array and metadata.guardrails to all agent specs (a11y, block-theme-build, development-assistant, gemini, generate-theme, release, release-scaffold, reporting, task-planner, task-researcher, template); expanded release-scaffold and release specs with detailed workflow sections |
Instructions & Documentation .github/instructions/README.md, .github/instructions/_index.instructions.md, .github/instructions/agent-spec.instructions.md, .github/instructions/jest-tests.instructions.md, .github/instructions/phpunit-tests.instructions.md, .github/instructions/playwright-tests.instructions.md, .github/instructions/copilot-ai-agent.instructions.md (removed) |
Introduced comprehensive testing guides (Jest, PHPUnit, Playwright), agent specification guidelines, instruction indexing, and removed copilot AI agent documentation |
Schema Documentation .github/schemas/README.md, .github/schemas/examples/README.md, .github/schemas/examples/theme-config.example.json |
Added frontmatter.schema.json documentation, updated example schema paths, normalized whitespace in examples |
Package Management package.json |
Version bumped to 1.2.0, reorganized npm scripts to route through scripts/agents/, added new test:schema and validate:mustache scripts, added devDependencies (ajv-formats, jest, webpack, loaders), added WordPress packages (@wordpress/block-editor, @wordpress/block-library) |
Release & Process Documentation docs/RELEASE_PROCESS.md, docs/RELEASE_PROCESS_SCAFFOLD.md, docs/GENERATE_THEME.md, docs/FRONTMATTER_SCHEMA.md |
Converted release docs to use mustache templates, added scaffold-specific process documentation with schema validation and phase-1 cleanup steps, updated paths to example schemas, introduced frontmatter schema documentation |
Repository Configuration .gitignore |
Added output-theme/ ignore, added logs/.gitkeep tracking, updated example schema tracking, changed from template to examples schema references |
Planning & Changelog CHANGELOG.md, docs/plans/2025-12-15-implementation-plan.md, README.md, screenshot.png.md |
Updated changelog with testing, logging, and scaffold workflow additions; added implementation plan with logger module and schema validation; updated README with script helpers testing info; removed references section from screenshot documentation |
Estimated code review effort
🎯 5 (Critical) | ⏱️ ~120+ minutes
Areas requiring extra attention:
scripts/agents/release-scaffold.agent.js— 300+ line agent with multiple validation workflows (version consistency, placeholders, schema, quality gates, documentation, generation smoke test, security audit, reporting); requires understanding of scaffold release validation logic and error handling paths.github/workflows/release-scaffold.yml— New 200+ line workflow with complex validation logic including placeholder verification, schema validation, dry-run quality gates, smoke tests, and release notes generationscripts/__tests__/jest.config.js— Significant restructuring of Jest configuration with localStorage setup, new module mappers, and test path patterns; impacts test execution environmentpackage.json— Major reorganization of npm scripts with agent paths, new test commands, and dependency additions; version bump and public API surface changes- Agent script reorganization (
scripts/agents/)— Multiple new agent scripts with complex CLI parsing, config validation, and public API exports; test coverage for each agent must be verified - Schema files (
.github/schemas/*.json) — Multiple new JSON schemas with validation rules for frontmatter, mustache variables, plugins, and themes; schema correctness is critical for downstream validation - Workflow interdependencies —
.github/workflows/agent-release.yml,release-scaffold.yml, andrelease.ymlhave interdependent job ordering and conditional logic; preflight guards for scaffold detection require careful review - Testing infrastructure (
.github/tests/*,.github/__tests__/*) — New test helpers and setup files; verify localStorage initialization, test utilities (retryOperation, assertWithLog), and logger integration work correctly across Jest/PHPUnit/E2E contexts - Mustache variable handling (
scripts/dry-run-config.js, tests) — New templating system with file discovery and variable replacement; verify glob patterns, replacement logic, and DRY_RUN_VALUES completeness - Documentation updates — Multiple instruction files with specific guidance on testing, agent specs, and release processes; ensure consistency with actual implementation and tooling
✨ Finishing touches
- 📝 Generate docstrings
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Post copyable unit tests in a comment
- Commit unit tests in branch
feature/markdown-reference-guardrail
📜 Recent review details
Configuration used: Path: .coderabbit.yml
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (3)
.github/reports/analysis/2025-12-15-153948-frontmatter-audit.csvis excluded by!**/*.csv.github/reports/analysis/2025-12-15-154025-frontmatter-audit.csvis excluded by!**/*.csv.github/reports/analysis/2025-12-15-174022-frontmatter-audit.csvis excluded by!**/*.csv
📒 Files selected for processing (107)
.babelrc.json(1 hunks).devcontainer/devcontainer.json(2 hunks).eslintrc.js(1 hunks).github/__tests__/README.md(1 hunks).github/__tests__/test-helper.js(1 hunks).github/agents/a11y.agent.md(1 hunks).github/agents/block-theme-build.agent.md(1 hunks).github/agents/development-assistant.agent.md(1 hunks).github/agents/gemini.agent.md(1 hunks).github/agents/generate-theme.agent.md(1 hunks).github/agents/release-scaffold.agent.md(5 hunks).github/agents/release.agent.md(2 hunks).github/agents/reporting.agent.md(1 hunks).github/agents/task-planner.agent.md(1 hunks).github/agents/task-researcher.agent.md(1 hunks).github/agents/template.agent.md(1 hunks).github/instructions/README.md(1 hunks).github/instructions/_index.instructions.md(1 hunks).github/instructions/agent-spec.instructions.md(3 hunks).github/instructions/block-json.schema.json(1 hunks).github/instructions/copilot-ai-agent.instructions.md(0 hunks).github/instructions/jest-tests.instructions.md(1 hunks).github/instructions/phpunit-tests.instructions.md(1 hunks).github/instructions/playwright-tests.instructions.md(1 hunks).github/schemas/README.md(1 hunks).github/schemas/examples/README.md(1 hunks).github/schemas/examples/theme-config.example.json(1 hunks).github/schemas/frontmatter.schema.json(1 hunks).github/schemas/mustache-variables-registry.schema.json(1 hunks).github/schemas/plugin-config.schema.json(1 hunks).github/schemas/theme-config.schema.json(17 hunks).github/schemas/theme.6.9.json(1 hunks).github/tests/README.md(1 hunks).github/tests/jest.setup.localstorage.js(1 hunks).github/tests/setup.js(1 hunks).github/tests/test-logger.js(1 hunks).github/tests/test-utils.js(1 hunks).github/workflows/agent-build.yml(1 hunks).github/workflows/agent-generate-theme.yml(0 hunks).github/workflows/agent-release.yml(2 hunks).github/workflows/agent-reporting.yml(1 hunks).github/workflows/release-scaffold.yml(1 hunks).github/workflows/release.yml(6 hunks).github/workflows/theme-json-validate.yml(1 hunks).gitignore(2 hunks).lighthouserc.js(1 hunks).npmpackagejsonlintrc.json(1 hunks).npmrc(0 hunks).stylelintignore(1 hunks).test-temp/localstorage/localstorage.json(1 hunks).wp-env.json(1 hunks)CHANGELOG.md(1 hunks)README.md(1 hunks)docs/FRONTMATTER_SCHEMA.md(1 hunks)docs/GENERATE_THEME.md(2 hunks)docs/RELEASE_PROCESS.md(11 hunks)docs/RELEASE_PROCESS_SCAFFOLD.md(4 hunks)docs/plans/2025-12-15-implementation-plan.md(1 hunks)jest.config.js(1 hunks)package.json(5 hunks)phpcs.xml(1 hunks)screenshot.png.md(0 hunks)scripts/__tests__/.github/tests/jest.setup.localstorage.js(1 hunks)scripts/__tests__/.test-temp/localstorage/localstorage.json(1 hunks)scripts/__tests__/agent-script.test.js(1 hunks)scripts/__tests__/audit-frontmatter.test.js(3 hunks)scripts/__tests__/block-theme-build.agent.test.js(0 hunks)scripts/__tests__/generate-theme.test.js(1 hunks)scripts/__tests__/jest.config.js(1 hunks)scripts/__tests__/test-audit/test.md(0 hunks)scripts/__tests__/theme-schema.test.js(1 hunks)scripts/agent-script.js(1 hunks)scripts/agents/README.md(1 hunks)scripts/agents/__tests__/block-theme-build.agent.test.js(1 hunks)scripts/agents/__tests__/config.test.js(1 hunks)scripts/agents/__tests__/development-assistant.agent.test.js(1 hunks)scripts/agents/__tests__/gemini.agent.test.js(1 hunks)scripts/agents/__tests__/generate-theme.agent.test.js(1 hunks)scripts/agents/__tests__/mustache-vars.test.js(1 hunks)scripts/agents/__tests__/release-scaffold.agent.test.js(1 hunks)scripts/agents/__tests__/release.agent.test.js(1 hunks)scripts/agents/__tests__/reporting.agent.test.js(1 hunks)scripts/agents/__tests__/template.agent.test.js(1 hunks)scripts/agents/block-theme-build.agent.js(1 hunks)scripts/agents/development-assistant.agent.js(11 hunks)scripts/agents/find-duplicates.js(1 hunks)scripts/agents/gemini.agent.js(1 hunks)scripts/agents/generate-theme.agent.js(1 hunks)scripts/agents/release-scaffold.agent.js(1 hunks)scripts/agents/release.agent.js(12 hunks)scripts/agents/reporting.agent.js(23 hunks)scripts/agents/template.agent.js(1 hunks)scripts/agents/template.agent.test.js(1 hunks)scripts/block-theme-build.agent.js(0 hunks)scripts/build.js(0 hunks)scripts/check-markdown-references.js(0 hunks)scripts/clean-github-references.js(0 hunks)scripts/dry-run-config.js(1 hunks)scripts/dry-run-test.js(0 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/config.test.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/config.test.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/dry-run-config.test.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/dry-run-mustache-vars.test.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/mustache-vars.test.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js(1 hunks)scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/__tests__/config.test.js(1 hunks)
⛔ Files not processed due to max files limit (21)
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/mustache-vars.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/dry-run-config.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/config.test.js
- scripts/dry-run/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/.dry-run-backup/tests/dry-run-config.test.js
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
Summary of ChangesHello @ashleyshaw, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request significantly refactors and enhances the project's development and release processes by introducing a robust testing infrastructure, a more organized project structure, and comprehensive validation mechanisms. The changes aim to improve code quality, maintainability, and the reliability of theme generation and release workflows, ensuring consistency and preventing common issues like undocumented variables or circular documentation references. This is a foundational update that streamlines development and prepares the project for future growth. Highlights
Ignored Files
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This is a massive and impressive pull request that significantly refactors the project structure and introduces a robust testing and validation infrastructure. The addition of schemas, detailed instruction files, and agent scripts is a huge step forward for maintainability and developer experience. The separation of scaffold release logic from generated theme release logic is a particularly welcome change.
I've identified a few critical issues that need to be addressed, primarily related to incorrect file paths in test helpers, a YAML syntax error, and a misconfiguration in phpcs.xml that disables PHP linting. There are also some misplaced files and directories that seem to be artifacts of the refactoring process and should be cleaned up.
Specifically, there appears to be a deeply nested backup directory structure under scripts/dry-run/ which should be removed.
Once these issues are resolved, this will be an excellent contribution to the project.
I am having trouble creating individual review comments. Click here to see my feedback.
.github/tests/test-helper.js (11-12)
The required paths for TestLogger and retryOperation are incorrect, and one of the required modules is not implemented.
TestLogger: The path../.github/tests/test-loggeris incorrect. It should be../tests/test-logger. More importantly, the target file.github/tests/test-logger.jsis a placeholder with no implementation. This will cause a runtime error. The logger needs to be implemented and exportTestLogger.retryOperation: The path../scripts/utils/test-utilsis incorrect. This utility is now in.github/tests/test-utils.js. The path should be../tests/test-utils.
These issues will prevent this helper module from working.
const TestLogger = require('../tests/test-logger');
const { retryOperation } = require('../tests/test-utils');
.github/agents/development-assistant.agent.md (4)
The tools array contains unquoted values (file_search, run_in_terminal) at the end, which is a YAML syntax error. All items in the array should be double-quoted strings. Additionally, there are several duplicate tool entries (e.g., grep_search, file_search, run_in_terminal) which should be consolidated for clarity and correctness.
tools: ["search", "edit", "fetch", "semantic_search", "read_file", "grep_search", "file_search", "run_in_terminal"]
phpcs.xml (49-54)
Numerous <exclude-pattern> entries have been added that seem to exclude all of the theme's PHP files from being linted by PHPCS (e.g., functions.php, inc/*, patterns/*). This effectively disables PHP code style checking for the entire theme, which is a significant regression in code quality enforcement. These exclusions should be removed to ensure PHP files are properly linted.
phpcs.xml (34-38)
The PHPCompatibilityWP rule and the minimum_supported_wp_version configuration have been removed. These are important for ensuring the theme is compatible with different PHP and WordPress versions. Was their removal intentional? If not, they should be restored.
scripts/tests/.github/tests/jest.setup.localstorage.js (1-27)
This file seems to be misplaced. A .github directory inside scripts/__tests__ is highly unconventional. This file should likely be located at the root .github/tests/ directory. Please verify the correct location for this setup file and move it accordingly to maintain a clean project structure.
name: "Pull Request"
about: "General changes, refactors, and maintenance"
title: "PR: {short summary}"
labels: ["status:needs-review"]
Summary
This PR consolidates the project structure and adds comprehensive testing infrastructure through 5 phases:
*.instructions.mdfiles with audit reportsKey Changes
Changes Overview
Test Plan
🤖 Generated with Claude Code
Summary by CodeRabbit
Testing
Documentation
Configuration
Build & Release
✏️ Tip: You can customize this high-level summary in your review settings.