# Dev files excluded from distribution
# Generated by t059 — keep in sync with composer.json `archive.exclude`
# (the production zip is built by `composer archive-project` via npm run build)
# and bin/build.sh additional exclusions.
#
# IMPORTANT: rsync `--exclude-from` (used by bin/build.sh) treats unanchored
# patterns as "match at any depth". Patterns intended to drop a *top-level*
# directory or file MUST have a leading `/` so they don't accidentally strip
# identically-named directories inside vendor/ packages (e.g. `src` would
# otherwise wipe vendor/php-di/php-di/src — see GH#1310).
#
# Rules of thumb:
#   /foo            — top-level only (anchored)
#   foo             — match `foo` anywhere in the tree (use sparingly)
#   **/.foo         — match `.foo` at any depth (intentional vendor sweep)
#   *.ext           — match by extension at any depth

# Version control
/.git
/.gitignore
/.gitattributes

# This file
/.distignore
/.distignore-wporg

# Node / build tooling
/node_modules
/src
/package.json
/package-lock.json
/webpack.config.js

# Composer dev metadata.
#
# We intentionally SHIP /composer.json with the plugin zip — the WP.org
# plugin-check tool warns ("missing_composer_json_file") when /vendor is
# present without a sibling composer.json, and shipping the manifest is
# explicitly allowed and helps reviewers verify dependency provenance.
# composer.lock is dev-only and stays excluded.
/composer.lock

# PHP quality / test tooling (top-level config only — do not touch vendor copies)
/phpunit.xml
/phpunit.xml.dist
/phpcs.xml
/phpstan.neon
/phpstan.neon.dist
/.phpunit.result.cache
/.phpunit.cache

# JavaScript / CSS linting (top-level configs)
/.eslintrc
/.eslintrc.json
/.eslintrc.js
/.eslintignore
/.stylelintrc
/.stylelintrc.json
/.stylelintrc.js
/.prettierrc
/.prettierrc.json
/.prettierrc.js

# Editor / IDE config (top-level only; vendor copies handled by **/.editorconfig below)
/.editorconfig
/.cursorrules
/.clinerules
/.windsurfrules
/.codex

# Transient AI / browser-automation session artefacts
# (Playwright MCP writes console logs and screenshots here during E2E runs.)
/.playwright-mcp

# WordPress local dev environment
/.wp-env.json
/wp-cli.yml

# CI / GitHub Actions
/.github
/codecov.yml

# Tests (top-level only — do not strip vendor/*/tests, those packages are excluded by name)
/tests

# Dev scripts (top-level only — vendor/bin is dev-only and handled separately)
/bin
/scripts

# WordPress.org SVN-only assets and Playground blueprints. WordPress.org reads
# `.wordpress-org/{assets,blueprints}/` from the SVN repository root, NOT from
# the plugin zip — shipping it inside the zip wastes bytes and exposes dev
# blueprint scaffolding to end-user installs.
/.wordpress-org

# Playwright is dev-only end-to-end testing (configured in webpack.config.js
# alongside @wordpress/scripts); the runtime plugin never references it.
/playwright.config.js
/playwright.config.ts

# Playground / local dev blueprints
/playground

# Database seeds and migration helpers (dev-only)
/seeds
/migrations

# JSON schemas (dev reference only)
/schemas

# PHP stubs for LSP/static analysis (never loaded at runtime)
/stubs

# AI agent / automation tooling
/.agents
/.aidevops.json
/.beads
/.claude
/.husky
/AGENTS.md

# Documentation (top-level only — do not touch vendor docs that may be referenced)
/docs
/README.md
/ROADMAP.md
/CONTRIBUTING.md
/CODE_OF_CONDUCT.md
/DESIGN.md
/SECURITY.md
/CHANGELOG.md
/PLANS-AI-AGENT-MASTERPLAN.md
/MODELS.md

# Task management
/TODO.md
/todo
/.task-counter
/test-results
/skills-lock.json

# Playwright artefacts (top-level only)
/playwright-report
/blob-report

# Coverage reports
/coverage.xml
/coverage-html

# Beads / Dolt local DBs
/.dolt
/.beads-credential-key

# Jest / React test artefacts (source-tree __tests__ and snapshots)
src/**/__tests__
src/**/__snapshots__

# Dev screenshots (root-level; assets/screenshots/ is kept)
/screenshots

# Vendor dev-only packages (safety net — prefer composer install --no-dev)
# These are require-dev packages that should not ship in a production zip.
vendor/dealerdirect
vendor/doctrine
vendor/myclabs
vendor/nikic
vendor/phar-io
vendor/phpcompatibility
vendor/phpcsstandards
vendor/phpstan
vendor/php-stubs
vendor/phpunit
vendor/sebastian
vendor/squizlabs
vendor/szepeviktor
vendor/theseer
vendor/wp-coding-standards
vendor/yoast
vendor/bin

# Build artefacts that should not be re-packaged (tree-wide is intentional)
*.zip
*.map
build/di-cache

# Misc tree-wide patterns (intentional)
*.log
*.db
.DS_Store
Thumbs.db

# Hidden / dev-only files inside third-party vendor packages.
# These are dotfiles that vendor projects ship for their own dev tooling
# (editor config, codex marker files, code-style tooling, type stubs) and
# they are not permitted by the WP.org plugin checker. We strip them here
# rather than relying on vendor maintainers to remove them.
**/.codex
**/.editorconfig
**/.php-cs-fixer.php
**/.php-cs-fixer.dist.php
**/.typos.toml
**/.doctrine-project.json

# Vendor-internal AI / issue-tracker / CI dirs that don't belong in production.
# Note: these are tree-wide patterns. Our own top-level .beads / .claude /
# .github are already excluded above.
vendor/**/.beads
vendor/**/.claude
vendor/**/.github

# Smalot pdfparser ships a Makefile and an alt_autoload that the WP.org
# checker dislikes; keep the package but drop those artefacts.
vendor/smalot/pdfparser/Makefile
vendor/smalot/pdfparser/alt_autoload.php-dist

# AI assistant root-level marker files
/CLAUDE.md
