Compare commits
10 Commits
df7f303ffb
...
6c8fbdd385
| Author | SHA1 | Date | |
|---|---|---|---|
| 6c8fbdd385 | |||
| eb0a3860ff | |||
| 476dc7e647 | |||
| 41724f72c0 | |||
| 58f5f8f71b | |||
| a9d9c69b65 | |||
| b58036f3f5 | |||
| 3f695bb003 | |||
| 340628877c | |||
| 6684375ea3 |
@@ -8,8 +8,13 @@ This document provides guidance for AI assistants to help with code review for t
|
||||
|
||||
Before submitting code for review, test it with WordPress Playground:
|
||||
|
||||
* [ ] Test in single site environment: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=5)
|
||||
* [ ] Test in multisite environment: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=18)
|
||||
* [ ] Test in single site environment:
|
||||
[Open in WordPress Playground][playground-single]
|
||||
* [ ] Test in multisite environment:
|
||||
[Open in WordPress Playground][playground-multisite]
|
||||
|
||||
[playground-single]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=5
|
||||
[playground-multisite]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=18
|
||||
* [ ] Verify plugin functionality works in both environments
|
||||
* [ ] Check for any JavaScript errors in the browser console
|
||||
* [ ] Run Cypress tests locally: `npm run test:playground:single` and `npm run test:playground:multisite`
|
||||
@@ -257,10 +262,20 @@ In function `handle_remove_reference()`:
|
||||
3. The success message should be translatable:
|
||||
```php
|
||||
// Change this:
|
||||
add_settings_error('fpden', 'fpden_removed', 'Plugin reference removed successfully.', 'updated');
|
||||
add_settings_error(
|
||||
'fpden',
|
||||
'fpden_removed',
|
||||
'Plugin reference removed successfully.',
|
||||
'updated'
|
||||
);
|
||||
|
||||
// To this:
|
||||
add_settings_error('fpden', 'fpden_removed', __('Plugin reference removed successfully.', 'fix-plugin-does-not-exist-notices'), 'updated');
|
||||
add_settings_error(
|
||||
'fpden',
|
||||
'fpden_removed',
|
||||
__( 'Plugin reference removed successfully.', 'fix-plugin-does-not-exist-notices' ),
|
||||
'updated'
|
||||
);
|
||||
```
|
||||
```
|
||||
|
||||
|
||||
@@ -365,27 +365,13 @@ function get_plugin_version() { ... }
|
||||
### Complete Feedback Loop System
|
||||
|
||||
```
|
||||
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
|
||||
│ │ │ │ │ │
|
||||
│ Code Changes │────▶│ Local Testing │────▶│ GitHub Actions │
|
||||
│ │ │ │ │ │
|
||||
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
|
||||
Code Changes ──► Local Testing ──► GitHub Actions
|
||||
│ │ │
|
||||
│ │ │
|
||||
│ │ │
|
||||
┌────────▼────────┐ ┌────────▼────────┐ ┌────────▼────────┐
|
||||
│ │ │ │ │ │
|
||||
│ AI Assistant │◀────│ Error Analysis │◀────│ Status Check │
|
||||
│ │ │ │ │ │
|
||||
└────────┬────────┘ └─────────────────┘ └─────────────────┘
|
||||
▼ ▼ ▼
|
||||
AI Assistant ◀── Error Analysis ◀── Status Check
|
||||
│
|
||||
│
|
||||
│
|
||||
┌────────▼────────┐ ┌─────────────────┐
|
||||
│ │ │ │
|
||||
│ Fix Generation │────▶│ Human Review │ (only when necessary)
|
||||
│ │ │ │
|
||||
└─────────────────┘ └─────────────────┘
|
||||
▼
|
||||
Fix Generation ──► Human Review (only when necessary)
|
||||
```
|
||||
|
||||
### Key Components
|
||||
@@ -485,6 +471,74 @@ When consulting humans, provide:
|
||||
4. **Specific Questions**: Ask targeted questions rather than open-ended ones
|
||||
5. **Recommendations**: Suggest possible solutions for approval
|
||||
|
||||
## Contributing to External Repositories
|
||||
|
||||
When issues are caused by bugs or missing features in external dependencies or GitHub Actions,
|
||||
AI assistants can contribute fixes upstream.
|
||||
|
||||
### Workflow for External Contributions
|
||||
|
||||
1. **Clone the Repository Locally**:
|
||||
```bash
|
||||
cd ~/Git
|
||||
git clone https://github.com/owner/repo.git
|
||||
cd repo
|
||||
git checkout -b feature/descriptive-branch-name
|
||||
```
|
||||
|
||||
2. **Make Changes and Commit**:
|
||||
```bash
|
||||
# Make your changes
|
||||
git add -A
|
||||
git commit -m "Descriptive commit message
|
||||
|
||||
Detailed explanation of what the change does and why.
|
||||
|
||||
Fixes #issue-number"
|
||||
```
|
||||
|
||||
3. **Fork and Push**:
|
||||
```bash
|
||||
# Create a fork (if not already forked)
|
||||
gh repo fork owner/repo --clone=false --remote=true
|
||||
|
||||
# Add fork as remote
|
||||
git remote add fork https://github.com/your-username/repo.git
|
||||
|
||||
# Push to fork
|
||||
git push fork feature/descriptive-branch-name
|
||||
```
|
||||
|
||||
4. **Create Pull Request**:
|
||||
```bash
|
||||
gh pr create \
|
||||
--repo owner/repo \
|
||||
--head your-username:feature/descriptive-branch-name \
|
||||
--title "Clear, descriptive title" \
|
||||
--body "## Summary
|
||||
|
||||
Description of changes...
|
||||
|
||||
Fixes #issue-number"
|
||||
```
|
||||
|
||||
### Best Practices for External Contributions
|
||||
|
||||
* Always clone to `~/Git/` for consistency
|
||||
* Check existing issues and PRs before starting work
|
||||
* Follow the project's contribution guidelines
|
||||
* Keep changes focused and minimal
|
||||
* Include tests if the project has a test suite
|
||||
* Reference the issue number in commits and PR description
|
||||
|
||||
### Local Repository Management
|
||||
|
||||
Keep cloned repositories in `~/Git/` organized:
|
||||
|
||||
* `~/Git/wp-plugin-starter-template-for-ai-coding/` - Main project
|
||||
* `~/Git/wp-performance-action/` - Forked for contributions
|
||||
* Other cloned repos as needed
|
||||
|
||||
## Conclusion
|
||||
|
||||
This error checking and feedback loop system creates a comprehensive framework for AI-driven development.
|
||||
|
||||
12
.github/workflows/code-quality.yml
vendored
12
.github/workflows/code-quality.yml
vendored
@@ -1,8 +1,10 @@
|
||||
name: Code Quality
|
||||
|
||||
on:
|
||||
# Only run on push to main (not feature branches) to avoid duplicate runs.
|
||||
# Feature branches get CI via pull_request trigger.
|
||||
push:
|
||||
branches: [ main, feature/* ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
@@ -27,11 +29,6 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress
|
||||
|
||||
- name: Install WordPress Coding Standards
|
||||
run: |
|
||||
composer require --dev wp-coding-standards/wpcs dealerdirect/phpcodesniffer-composer-installer
|
||||
vendor/bin/phpcs --config-set installed_paths vendor/wp-coding-standards/wpcs
|
||||
|
||||
- name: Run PHPCS
|
||||
run: composer phpcs
|
||||
continue-on-error: true
|
||||
@@ -59,9 +56,6 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress
|
||||
|
||||
- name: Install PHPStan WordPress stubs
|
||||
run: composer require --dev szepeviktor/phpstan-wordpress
|
||||
|
||||
- name: Run PHPStan
|
||||
run: composer phpstan
|
||||
continue-on-error: true
|
||||
|
||||
4
.github/workflows/phpunit.yml
vendored
4
.github/workflows/phpunit.yml
vendored
@@ -1,8 +1,10 @@
|
||||
name: PHPUnit Tests
|
||||
|
||||
on:
|
||||
# Only run on push to main (not feature branches) to avoid duplicate runs.
|
||||
# Feature branches get CI via pull_request trigger.
|
||||
push:
|
||||
branches: [ main, feature/* ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
|
||||
10
.github/workflows/playground-tests.yml
vendored
10
.github/workflows/playground-tests.yml
vendored
@@ -8,8 +8,10 @@ name: WordPress Playground Tests
|
||||
# npm run playground:start:multisite
|
||||
|
||||
on:
|
||||
# Only run on push to main (not feature branches) to avoid duplicate runs.
|
||||
# Feature branches get CI via pull_request trigger.
|
||||
push:
|
||||
branches: [ main, feature/* ]
|
||||
branches: [ main ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
workflow_dispatch:
|
||||
@@ -248,7 +250,11 @@ jobs:
|
||||
name: WordPress Performance Tests
|
||||
runs-on: ubuntu-latest
|
||||
needs: code-quality
|
||||
# Allow failures since performance tests can be flaky in CI environments
|
||||
# DISABLED: Performance tests are flaky in CI due to Lighthouse/Playwright resource constraints.
|
||||
# The wp-performance-action uses WordPress Playground internally and Lighthouse for metrics,
|
||||
# which requires significant resources and is not reliable in shared CI runners.
|
||||
# Run performance tests locally or on dedicated infrastructure for accurate results.
|
||||
if: false
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
|
||||
7
.github/workflows/tests.yml
vendored
7
.github/workflows/tests.yml
vendored
@@ -34,11 +34,8 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: composer install --prefer-dist --no-progress
|
||||
|
||||
# - name: Debug test file content
|
||||
# run: echo "--- Debugging tests/test-admin.php lines 75-95 ---" && sed -n '75,95p' tests/test-admin.php && echo "--- End Debugging ---"
|
||||
|
||||
# - name: Run tests
|
||||
# run: ./vendor/bin/phpunit
|
||||
- name: Run tests
|
||||
run: ./vendor/bin/phpunit
|
||||
|
||||
code-style:
|
||||
name: Code Style
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -62,3 +62,4 @@ temp/
|
||||
# Test Coverage
|
||||
coverage/
|
||||
.phpunit.result.cache
|
||||
.agents/loop-state/
|
||||
|
||||
@@ -67,7 +67,7 @@ if ($condition) {
|
||||
### Documentation
|
||||
|
||||
* All classes, methods, and functions should be documented using PHPDoc
|
||||
* Include a description, parameters, return values, and exceptions
|
||||
* Include descriptions of parameters, return values, and any exceptions thrown
|
||||
|
||||
```php
|
||||
/**
|
||||
@@ -271,7 +271,7 @@ To ensure your code passes the quality checks from these tools, follow these gui
|
||||
3. **Using AI Assistants with Code Quality Tools**
|
||||
* When you receive feedback from code quality tools, you can use AI assistants to help address the issues
|
||||
* Copy the output from the code quality tool and paste it into your AI assistant chat
|
||||
* Ask the AI to help you understand and resolve the issues
|
||||
* Request the AI's assistance to interpret and resolve the reported issues
|
||||
* Example prompt:
|
||||
|
||||
```text
|
||||
|
||||
@@ -72,33 +72,33 @@ If you want to contribute code:
|
||||
|
||||
#### Pull Request Guidelines
|
||||
|
||||
- Follow the coding standards (see [Coding Standards](Coding-Standards))
|
||||
- Write tests for your changes
|
||||
- Update documentation as needed
|
||||
- Keep pull requests focused on a single change
|
||||
- Write a clear, descriptive title and description
|
||||
- Reference any related issues
|
||||
- Ensure your code passes the automated code quality checks (see below)
|
||||
* Follow the coding standards (see [Coding Standards](Coding-Standards))
|
||||
* Write tests for your changes
|
||||
* Update documentation as needed
|
||||
* Keep pull requests focused on a single change
|
||||
* Write a clear, descriptive title and description
|
||||
* Reference any related issues
|
||||
* Ensure your code passes the automated code quality checks (see below)
|
||||
|
||||
#### Code Quality Tools
|
||||
|
||||
This project uses several automated code quality tools to ensure high standards. These tools are free for public repositories and will automatically analyze your code when you create a pull request:
|
||||
|
||||
1. **CodeRabbit**: AI-powered code review tool
|
||||
- [Website](https://www.coderabbit.ai/)
|
||||
- Provides automated feedback on pull requests
|
||||
* [Website](https://www.coderabbit.ai/)
|
||||
* Provides automated feedback on pull requests
|
||||
|
||||
2. **CodeFactor**: Continuous code quality monitoring
|
||||
- [Website](https://www.codefactor.io/)
|
||||
- Provides a grade for your codebase
|
||||
* [Website](https://www.codefactor.io/)
|
||||
* Provides a grade for your codebase
|
||||
|
||||
3. **Codacy**: Code quality and static analysis
|
||||
- [Website](https://www.codacy.com/)
|
||||
- Identifies issues related to code style, security, and performance
|
||||
* [Website](https://www.codacy.com/)
|
||||
* Identifies issues related to code style, security, and performance
|
||||
|
||||
4. **SonarCloud**: Code quality and security analysis
|
||||
- [Website](https://sonarcloud.io/)
|
||||
- Provides detailed analysis of code quality and security
|
||||
* [Website](https://sonarcloud.io/)
|
||||
* Provides detailed analysis of code quality and security
|
||||
|
||||
#### Using AI Assistants with Code Quality Tools
|
||||
|
||||
@@ -106,7 +106,7 @@ When you receive feedback from these code quality tools, you can use AI assistan
|
||||
|
||||
1. Copy the output from the code quality tool
|
||||
2. Paste it into your AI assistant chat
|
||||
3. Ask the AI to help you understand and resolve the issues
|
||||
3. Request the AI's assistance to interpret and resolve the reported issues
|
||||
4. Apply the suggested fixes
|
||||
5. Commit the changes and verify that the issues are resolved
|
||||
|
||||
@@ -143,7 +143,7 @@ To ensure your code meets the quality standards, run these commands before submi
|
||||
* Check JavaScript coding standards: `npm run lint:js`
|
||||
* Check CSS coding standards: `npm run lint:css`
|
||||
|
||||
These checks will help identify and fix issues before they are caught by the automated code quality tools in the pull request process.
|
||||
These checks will assist in identifying and resolving issues before they are caught by the automated code quality tools in the pull request process.
|
||||
|
||||
## Documentation
|
||||
|
||||
|
||||
@@ -17,9 +17,12 @@ It uses WebAssembly, which means:
|
||||
|
||||
The easiest way to test our plugin with WordPress Playground is to use the online version:
|
||||
|
||||
1. Single site testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=2)
|
||||
1. Single site testing: [Open in WordPress Playground][playground-single]
|
||||
|
||||
2. Multisite testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=2)
|
||||
2. Multisite testing: [Open in WordPress Playground][playground-multisite]
|
||||
|
||||
[playground-single]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=2
|
||||
[playground-multisite]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=2
|
||||
|
||||
These links automatically set up WordPress with multisite enabled and WP_DEBUG enabled.
|
||||
|
||||
@@ -117,8 +120,8 @@ We have two blueprints for testing:
|
||||
To run tests with WordPress Playground:
|
||||
|
||||
1. Open the appropriate WordPress Playground link:
|
||||
* [Single site](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=2)
|
||||
* [Multisite](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=2)
|
||||
* [Single site][playground-single]
|
||||
* [Multisite][playground-multisite]
|
||||
|
||||
2. Test the plugin manually in the browser
|
||||
|
||||
@@ -128,7 +131,8 @@ We've also included HTML files that embed WordPress Playground:
|
||||
|
||||
1. Open `playground/index.html` in your browser for single site testing
|
||||
2. Open `playground/multisite.html` in your browser for multisite testing
|
||||
3. Open `playground/test.html` in your browser for a unified interface with buttons to switch between single site and multisite
|
||||
3. Open `playground/test.html` in your browser for a unified interface with buttons
|
||||
to switch between single site and multisite
|
||||
|
||||
You can serve these files locally with a simple HTTP server:
|
||||
|
||||
@@ -169,7 +173,9 @@ This will start a local WordPress instance with your plugin installed and activa
|
||||
|
||||
You can customize the blueprints to suit your testing needs.
|
||||
|
||||
See the [WordPress Playground Blueprints documentation](https://wordpress.github.io/wordpress-playground/blueprints/) for details.
|
||||
See the [WordPress Playground Blueprints documentation][blueprints-docs] for details.
|
||||
|
||||
[blueprints-docs]: https://wordpress.github.io/wordpress-playground/blueprints/
|
||||
|
||||
## WordPress Playground JavaScript API
|
||||
|
||||
|
||||
@@ -134,9 +134,12 @@ WordPress Playground runs WordPress entirely in the browser using WebAssembly. T
|
||||
|
||||
The easiest way to test our plugin with WordPress Playground is to use the online version:
|
||||
|
||||
1. Single site testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=2)
|
||||
1. Single site testing: [Open in WordPress Playground][playground-single]
|
||||
|
||||
2. Multisite testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=2)
|
||||
2. Multisite testing: [Open in WordPress Playground][playground-multisite]
|
||||
|
||||
[playground-single]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/blueprint.json&_t=2
|
||||
[playground-multisite]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/main/playground/multisite-blueprint.json&_t=2
|
||||
|
||||
These links automatically set up WordPress with multisite enabled and WP_DEBUG enabled.
|
||||
|
||||
@@ -148,7 +151,8 @@ We've also included HTML files that embed WordPress Playground:
|
||||
|
||||
1. Open `playground/index.html` in your browser for single site testing
|
||||
2. Open `playground/multisite.html` in your browser for multisite testing
|
||||
3. Open `playground/test.html` in your browser for a unified interface with buttons to switch between single site and multisite
|
||||
3. Open `playground/test.html` in your browser for a unified interface with buttons
|
||||
to switch between single site and multisite
|
||||
|
||||
You can serve these files locally with a simple HTTP server:
|
||||
|
||||
|
||||
25
AGENTS.md
25
AGENTS.md
@@ -99,17 +99,23 @@ For local testing with WordPress Playground, LocalWP, and wp-env, see **@.agents
|
||||
|
||||
When working in a multi-repository workspace, follow these guidelines to avoid confusion:
|
||||
|
||||
1. **Verify Repository Context**: Always check which repository you're currently working in before making any changes or recommendations.
|
||||
1. **Verify Repository Context**: Always check which repository you're currently working in
|
||||
before making any changes or recommendations.
|
||||
|
||||
2. **Limit Code Search Scope**: When searching for code or functionality, explicitly limit your search to the current repository.
|
||||
2. **Limit Code Search Scope**: When searching for code or functionality,
|
||||
explicitly limit your search to the current repository.
|
||||
|
||||
3. **Don't Assume Features**: Never assume that features present in one repository should be implemented in another. Each repository has its own specific purpose and feature set.
|
||||
3. **Don't Assume Features**: Never assume that features present in one repository
|
||||
should be implemented in another. Each repository has its own specific purpose and feature set.
|
||||
|
||||
4. **Repository-Specific Documentation**: Documentation should only reflect the actual features and functionality of the current repository.
|
||||
4. **Repository-Specific Documentation**: Documentation should only reflect the actual features
|
||||
and functionality of the current repository.
|
||||
|
||||
5. **Cross-Repository Inspiration**: If you want to implement a feature inspired by another repository, explicitly mention that it's a new feature being added, not an existing one.
|
||||
5. **Cross-Repository Inspiration**: If you want to implement a feature inspired by another
|
||||
repository, explicitly mention that it's a new feature being added, not an existing one.
|
||||
|
||||
6. **Verify Before Implementation**: Before implementing or documenting a feature, verify that it actually exists in the current repository by checking the codebase.
|
||||
6. **Verify Before Implementation**: Before implementing or documenting a feature, verify that
|
||||
it actually exists in the current repository by checking the codebase.
|
||||
|
||||
7. **Consistent Markdown Formatting**: Always use asterisks (*) for bullet points in Markdown files, not hyphens (-).
|
||||
|
||||
@@ -161,7 +167,9 @@ When working with this repository, remember these preferences:
|
||||
3. Keep code modular and maintainable
|
||||
4. Reference these preferences in future interactions
|
||||
|
||||
This ensures consistency across coding sessions and reduces the need for developers to repeatedly explain their preferences.
|
||||
This ensures consistency across coding sessions.
|
||||
|
||||
It reduces the need for developers to repeatedly explain their preferences.
|
||||
|
||||
## Autonomous CI/CD and Error Handling
|
||||
|
||||
@@ -175,7 +183,8 @@ As an AI assistant, you should:
|
||||
4. **Verify Solutions**: Ensure fixes pass all tests and quality checks
|
||||
5. **Document Resolutions**: Update documentation with solutions for future reference
|
||||
|
||||
For detailed instructions on establishing feedback loops and error checking processes, see **@.agents/error-checking-feedback-loops.md**.
|
||||
For detailed instructions on feedback loops and error checking, see
|
||||
**@.agents/error-checking-feedback-loops.md**.
|
||||
|
||||
### When to Consult Humans
|
||||
|
||||
|
||||
119
README.md
119
README.md
@@ -1,6 +1,33 @@
|
||||
# WordPress Plugin Starter Template for AI Coding
|
||||
|
||||
[](https://www.gnu.org/licenses/gpl-2.0.html) [](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/actions/workflows/tests.yml) [](https://wordpress.org/about/requirements/) [](https://wordpress.org/about/requirements/) [](https://wordpress.org/plugins/your-plugin-slug/) [](https://wordpress.org/plugins/your-plugin-slug/reviews/) [](https://wordpress.org/plugins/your-plugin-slug/) [](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/releases) [](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/issues) [](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/graphs/contributors) [](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/wiki)  [](https://www.codefactor.io/repository/github/wpallstars/wp-plugin-starter-template-for-ai-coding) [](https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding) [](https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding) [](https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding) [](https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding) [](https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding) [](https://app.codacy.com/gh/wpallstars/wp-plugin-starter-template-for-ai-coding/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
|
||||
[![License][badge-license]][url-license]
|
||||
[![Build Status][badge-build]][url-build]
|
||||
[![Requires PHP][badge-php]][url-requirements]
|
||||
[![Requires WordPress][badge-wp]][url-requirements]
|
||||
[![Wiki][badge-wiki]][url-wiki]
|
||||
[![CodeRabbit Reviews][badge-coderabbit]][url-coderabbit]
|
||||
[![CodeFactor][badge-codefactor]][url-codefactor]
|
||||
[![Quality Gate Status][badge-sonar-gate]][url-sonar]
|
||||
[![Codacy Badge][badge-codacy]][url-codacy]
|
||||
|
||||
[badge-license]: https://img.shields.io/badge/license-GPL--2.0%2B-blue.svg
|
||||
[badge-build]: https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/actions/workflows/tests.yml/badge.svg
|
||||
[badge-php]: https://img.shields.io/badge/php-%3E%3D%207.4-blue.svg
|
||||
[badge-wp]: https://img.shields.io/badge/WordPress-%3E%3D%205.0-blue.svg
|
||||
[badge-wiki]: https://img.shields.io/badge/documentation-wiki-blue.svg
|
||||
[badge-coderabbit]: https://img.shields.io/coderabbit/prs/github/wpallstars/wp-plugin-starter-template-for-ai-coding?labelColor=171717&color=FF570A&label=CodeRabbit+Reviews
|
||||
[badge-codefactor]: https://www.codefactor.io/repository/github/wpallstars/wp-plugin-starter-template-for-ai-coding/badge
|
||||
[badge-sonar-gate]: https://sonarcloud.io/api/project_badges/measure?project=wpallstars_wp-plugin-starter-template-for-ai-coding&metric=alert_status
|
||||
[badge-codacy]: https://app.codacy.com/project/badge/Grade/905754fd010b481490b496fb800e6144
|
||||
|
||||
[url-license]: https://www.gnu.org/licenses/gpl-2.0.html
|
||||
[url-build]: https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/actions/workflows/tests.yml
|
||||
[url-requirements]: https://wordpress.org/about/requirements/
|
||||
[url-wiki]: https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/wiki
|
||||
[url-coderabbit]: https://coderabbit.ai
|
||||
[url-codefactor]: https://www.codefactor.io/repository/github/wpallstars/wp-plugin-starter-template-for-ai-coding
|
||||
[url-sonar]: https://sonarcloud.io/summary/new_code?id=wpallstars_wp-plugin-starter-template-for-ai-coding
|
||||
[url-codacy]: https://app.codacy.com/gh/wpallstars/wp-plugin-starter-template-for-ai-coding/dashboard
|
||||
|
||||
A comprehensive starter template for WordPress plugins with best practices for AI-assisted development.
|
||||
|
||||
@@ -64,16 +91,18 @@ In most AI IDEs, you can pin these files to ensure they're considered in each me
|
||||
|
||||
To get started with this template, follow these steps:
|
||||
|
||||
1. In your terminal, navigate to the folder you keep you Git repositories (eg: `~/Git/`), then clone this repository to your local machine:
|
||||
1. Navigate to your Git repositories folder (e.g., `~/Git/`), then clone:
|
||||
```bash
|
||||
git clone https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding.git
|
||||
```
|
||||
|
||||
2. Open the [Starter Prompt](.wiki/Starter-Prompt.md) file and follow the instructions to customize the template for your plugin.
|
||||
2. Open the [Starter Prompt](.wiki/Starter-Prompt.md) file and follow the instructions
|
||||
to customize the template for your plugin.
|
||||
|
||||
3. Add the AGENTS.md file and .agents/ directory to your AI IDE chat context.
|
||||
|
||||
4. Use an AI assistant like GitHub Copilot, Claude, or ChatGPT to help you customize the template by providing the prompt from the Starter Prompt file.
|
||||
4. Use an AI assistant like GitHub Copilot, Claude, or ChatGPT to help customize
|
||||
the template by providing the prompt from the Starter Prompt file.
|
||||
|
||||
### Development Environment
|
||||
|
||||
@@ -111,9 +140,14 @@ The template includes multiple testing approaches:
|
||||
|
||||
Test your plugin directly in the browser without any local setup:
|
||||
|
||||
1. Single site testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/feature/testing-framework/playground/blueprint.json&_t=5)
|
||||
1. Single site testing:
|
||||
[Open in WordPress Playground][playground-single-readme]
|
||||
|
||||
2. Multisite testing: [Open in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/feature/testing-framework/playground/multisite-blueprint.json&_t=18)
|
||||
2. Multisite testing:
|
||||
[Open in WordPress Playground][playground-multisite-readme]
|
||||
|
||||
[playground-single-readme]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/feature/testing-framework/playground/blueprint.json&_t=5
|
||||
[playground-multisite-readme]: https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/feature/testing-framework/playground/multisite-blueprint.json&_t=18
|
||||
|
||||
For more details, see the [Playground Testing](.wiki/Playground-Testing.md) documentation.
|
||||
|
||||
@@ -197,7 +231,11 @@ This template includes functionality that allows users to choose where they want
|
||||
|
||||
### How do I customize this template for my plugin?
|
||||
|
||||
See the [Starter Prompt](.wiki/Starter-Prompt.md) file for detailed instructions on customizing this template for your specific plugin needs. Make sure to add the AGENTS.md file and .agents/ directory to your AI IDE chat context for the best results.
|
||||
See the [Starter Prompt](.wiki/Starter-Prompt.md) file for detailed instructions on
|
||||
customizing this template for your specific plugin needs.
|
||||
|
||||
Make sure to add the AGENTS.md file and .agents/ directory to your AI IDE chat context
|
||||
for the best results.
|
||||
|
||||
### What files do I need to update with my plugin information?
|
||||
|
||||
@@ -229,7 +267,8 @@ This will create a ZIP file that you can install in WordPress.
|
||||
|
||||
### How do I add custom functionality to my plugin?
|
||||
|
||||
Customize the includes/core.php file to implement your core functionality and the admin/lib/admin.php file for admin-specific functionality.
|
||||
Customize the `includes/core.php` file to implement your core functionality and the
|
||||
`admin/lib/admin.php` file for admin-specific functionality.
|
||||
|
||||
### Is this template compatible with WordPress multisite?
|
||||
|
||||
@@ -240,7 +279,7 @@ We have a testing framework that allows you to verify functionality in both envi
|
||||
You can test multisite compatibility in two ways:
|
||||
|
||||
1. Using WordPress Playground (no Docker required):
|
||||
* [Open Multisite in WordPress Playground](https://playground.wordpress.net/?blueprint-url=https://raw.githubusercontent.com/wpallstars/wp-plugin-starter-template-for-ai-coding/feature/testing-framework/playground/multisite-blueprint.json&_t=18)
|
||||
* [Open Multisite in WordPress Playground][playground-multisite-readme]
|
||||
|
||||
2. Using wp-env (requires Docker):
|
||||
```bash
|
||||
@@ -261,7 +300,10 @@ If you need help with this template, there are several ways to get support:
|
||||
|
||||
Contributions are welcome! Please feel free to submit a Pull Request.
|
||||
|
||||
1. Fork the repository on [GitHub](https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/) or [Gitea](https://gitea.wpallstars.com/wpallstars/wp-plugin-starter-template-for-ai-coding/)
|
||||
1. Fork the repository on [GitHub][repo-github] or [Gitea][repo-gitea]
|
||||
|
||||
[repo-github]: https://github.com/wpallstars/wp-plugin-starter-template-for-ai-coding/
|
||||
[repo-gitea]: https://gitea.wpallstars.com/wpallstars/wp-plugin-starter-template-for-ai-coding/
|
||||
2. Create your feature branch: `git checkout -b feature/amazing-feature`
|
||||
3. Commit your changes: `git commit -m 'Add some amazing feature'`
|
||||
4. Push to the branch: `git push origin feature/amazing-feature`
|
||||
@@ -271,7 +313,10 @@ For more detailed information, see the [Contributing Guide](.wiki/Contributing.m
|
||||
|
||||
### Code Quality Tools
|
||||
|
||||
This project uses several automated code quality tools to ensure high standards. These tools are free for public repositories and should be integrated into any new repositories based on this template:
|
||||
This project uses several automated code quality tools to ensure high standards.
|
||||
|
||||
These tools are free for public repositories and should be integrated into any new
|
||||
repositories based on this template:
|
||||
|
||||
1. **CodeRabbit**: AI-powered code review tool
|
||||
* [Website](https://www.coderabbit.ai/)
|
||||
@@ -291,7 +336,9 @@ This project uses several automated code quality tools to ensure high standards.
|
||||
3. Go to your project settings > Integrations > Project API
|
||||
4. Generate a project API token
|
||||
5. Add the token as a secret named `CODACY_PROJECT_TOKEN` in your GitHub repository settings
|
||||
6. Note: Codacy tokens are project-specific, so they need to be added at the repository level. However, you can use GitHub Actions to securely pass these tokens between repositories if needed.
|
||||
6. Note: Codacy tokens are project-specific, so they need to be added at the
|
||||
repository level. You can use GitHub Actions to securely pass tokens
|
||||
between repositories if needed.
|
||||
|
||||
4. **SonarCloud**: Code quality and security analysis
|
||||
* [Website](https://sonarcloud.io/)
|
||||
@@ -302,7 +349,8 @@ This project uses several automated code quality tools to ensure high standards.
|
||||
2. Create a new organization or use an existing one
|
||||
3. Add your repository to SonarCloud
|
||||
4. Generate a token in SonarCloud (Account > Security > Tokens)
|
||||
5. Add the token as a secret named `SONAR_TOKEN` in your GitHub repository or organization settings (see "GitHub Secrets Management" section below)
|
||||
5. Add the token as a secret named `SONAR_TOKEN` in your GitHub repository or
|
||||
organization settings (see "GitHub Secrets Management" section below)
|
||||
|
||||
5. **PHP_CodeSniffer (PHPCS)**: PHP code style checker
|
||||
* Enforces WordPress Coding Standards
|
||||
@@ -328,11 +376,12 @@ When you receive feedback from these code quality tools, you can use AI assistan
|
||||
|
||||
1. Copy the output from the code quality tool
|
||||
2. Paste it into your AI assistant chat
|
||||
3. Ask the AI to help you understand and resolve the issues
|
||||
3. Request the AI's assistance to interpret and resolve the reported issues
|
||||
4. Apply the suggested fixes
|
||||
5. Commit the changes and verify that the issues are resolved
|
||||
|
||||
For more information on coding standards and how to pass code quality checks, see the [Coding Standards Guide](.wiki/Coding-Standards.md).
|
||||
For more information on coding standards and how to pass code quality checks,
|
||||
see the [Coding Standards Guide](.wiki/Coding-Standards.md).
|
||||
|
||||
### GitHub Secrets Management
|
||||
|
||||
@@ -350,7 +399,8 @@ GitHub offers three levels of secrets management, each with different scopes and
|
||||
* Available at: Repository > Settings > Secrets and variables > Actions
|
||||
* Scope: Limited to a single repository
|
||||
* Benefits: Repository-specific, higher isolation
|
||||
* Recommended for: `CODACY_PROJECT_TOKEN` and other repository-specific credentials or tokens that shouldn't be shared
|
||||
* Recommended for: `CODACY_PROJECT_TOKEN` and other repository-specific credentials
|
||||
or tokens that shouldn't be shared
|
||||
|
||||
3. **Environment Secrets**:
|
||||
* Available at: Repository > Settings > Environments > (select environment) > Environment secrets
|
||||
@@ -358,7 +408,12 @@ GitHub offers three levels of secrets management, each with different scopes and
|
||||
* Benefits: Environment-specific, can have approval requirements
|
||||
* Recommended for: Deployment credentials that vary between environments
|
||||
|
||||
For code quality tools like SonarCloud, organization secrets are recommended if you have multiple repositories that use these tools. This approach reduces management overhead and ensures consistent configuration across projects. For Codacy, since tokens are project-specific, they should be set at the repository level.
|
||||
For code quality tools like SonarCloud, organization secrets are recommended if you have
|
||||
multiple repositories that use these tools.
|
||||
|
||||
This approach reduces management overhead and ensures consistent configuration across
|
||||
projects. For Codacy, since tokens are project-specific, they should be set at the
|
||||
repository level.
|
||||
|
||||
### Local Environment Setup for Code Quality Tools
|
||||
|
||||
@@ -464,13 +519,16 @@ To run code quality tools locally before committing to GitHub:
|
||||
|
||||
For more detailed instructions, see the [Code Quality Setup Guide](docs/code-quality-setup.md).
|
||||
|
||||
By running these tools locally, you can identify and fix issues before pushing your code to GitHub, ensuring smoother CI/CD workflows.
|
||||
By running these tools locally, you can identify and fix issues before pushing your code
|
||||
to GitHub, ensuring smoother CI/CD workflows.
|
||||
|
||||
## Developers
|
||||
|
||||
### AI-Powered Development
|
||||
|
||||
This repository is configured to work with various AI-powered development tools. You can use any of the following AI IDEs to contribute to this project:
|
||||
This repository is configured to work with various AI-powered development tools.
|
||||
|
||||
You can use any of the following AI IDEs to contribute to this project:
|
||||
|
||||
* [Augment Code](https://www.augmentcode.com/) - AI-powered coding assistant
|
||||
* [Bolt](https://www.bolt.new/) - AI-powered code editor
|
||||
@@ -487,9 +545,11 @@ The repository includes configuration files for all these tools to ensure a cons
|
||||
|
||||
### Git Updater Integration
|
||||
|
||||
This template is designed to work seamlessly with the Git Updater plugin for updates from GitHub and Gitea. To ensure proper integration:
|
||||
This template is designed to work seamlessly with the Git Updater plugin for updates from
|
||||
GitHub and Gitea. To ensure proper integration:
|
||||
|
||||
1. **Required Headers**: The plugin includes specific headers in the main plugin file that Git Updater uses to determine update sources and branches:
|
||||
1. **Required Headers**: The plugin includes specific headers in the main plugin file
|
||||
that Git Updater uses to determine update sources and branches:
|
||||
```php
|
||||
* GitHub Plugin URI: wpallstars/wp-plugin-starter-template-for-ai-coding
|
||||
* GitHub Branch: main
|
||||
@@ -500,13 +560,17 @@ This template is designed to work seamlessly with the Git Updater plugin for upd
|
||||
* Gitea Branch: main
|
||||
```
|
||||
|
||||
2. **Tagging Releases**: When creating a new release, always tag it with the 'v' prefix (e.g., `v0.1.2`) to ensure GitHub Actions can create the proper release assets.
|
||||
2. **Tagging Releases**: When creating a new release, always tag it with the 'v' prefix
|
||||
(e.g., `v0.1.2`) to ensure GitHub Actions can create the proper release assets.
|
||||
|
||||
3. **GitHub Actions**: The repository includes a GitHub Actions workflow that automatically builds the plugin and creates a release with the .zip file when a new tag is pushed.
|
||||
3. **GitHub Actions**: The repository includes a GitHub Actions workflow that automatically
|
||||
builds the plugin and creates a release with the .zip file when a new tag is pushed.
|
||||
|
||||
4. **Update Source Selection**: The template includes a feature that allows users to choose their preferred update source (WordPress.org, GitHub, or Gitea).
|
||||
4. **Update Source Selection**: The template includes a feature that allows users to choose
|
||||
their preferred update source (WordPress.org, GitHub, or Gitea).
|
||||
|
||||
For more information on Git Updater integration, see the [Git Updater Required Headers documentation](https://git-updater.com/knowledge-base/required-headers/).
|
||||
For more information on Git Updater integration, see the
|
||||
[Git Updater Required Headers documentation](https://git-updater.com/knowledge-base/required-headers/).
|
||||
|
||||
## Changelog
|
||||
|
||||
@@ -603,4 +667,7 @@ This project is licensed under the GPL-2.0+ License - see the [LICENSE](LICENSE)
|
||||
|
||||
## Credits
|
||||
|
||||
This template is based on the experience gained from developing the ["Fix 'Plugin file does not exist' Notices"](https://github.com/wpallstars/wp-fix-plugin-does-not-exist-notices) plugin by WPALLSTARS.
|
||||
This template is based on the experience gained from developing the
|
||||
["Fix 'Plugin file does not exist' Notices"][fix-plugin-notices] plugin by WPALLSTARS.
|
||||
|
||||
[fix-plugin-notices]: https://github.com/wpallstars/wp-fix-plugin-does-not-exist-notices
|
||||
|
||||
8
build.sh
8
build.sh
@@ -70,9 +70,9 @@ if [ -d "vendor" ]; then
|
||||
cp -R vendor "$BUILD_DIR/"
|
||||
fi
|
||||
|
||||
# Create ZIP file
|
||||
# Create ZIP file.
|
||||
echo "Creating ZIP file..."
|
||||
cd build
|
||||
cd build || exit 1
|
||||
zip -r "../$ZIP_FILE" "$PLUGIN_SLUG" -x "*.DS_Store" -x "*.git*" -x "*.github*"
|
||||
cd ..
|
||||
|
||||
@@ -86,8 +86,8 @@ if [ -f "$ZIP_FILE" ]; then
|
||||
echo "\nDeploying to local WordPress installation..."
|
||||
echo "Deploying to local WordPress installation..."
|
||||
|
||||
# Remove existing plugin directory
|
||||
rm -rf "$WP_LOCAL_PLUGIN_DIR/$PLUGIN_SLUG"
|
||||
# Remove existing plugin directory.
|
||||
rm -rf "${WP_LOCAL_PLUGIN_DIR:?}/$PLUGIN_SLUG"
|
||||
|
||||
# Copy files to local WordPress installation
|
||||
rsync -av --exclude=".git" --exclude=".github" --exclude=".DS_Store" \
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 124 KiB |
@@ -25,4 +25,5 @@ if ( is_multisite() ) {
|
||||
|
||||
## Testing
|
||||
|
||||
For information on testing your plugin in a multisite environment, see the [Testing Framework](../../.wiki/Testing.md) documentation.
|
||||
For information on testing your plugin in a multisite environment, see the
|
||||
[Testing Framework](../../.wiki/Testing.md) documentation.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<exclude-pattern>*/build/*</exclude-pattern>
|
||||
<exclude-pattern>*/dist/*</exclude-pattern>
|
||||
|
||||
<!-- Command line arguments -->
|
||||
<!-- Command line arguments: combined short flags (-s shows sniff codes, -p shows progress) -->
|
||||
<arg value="sp"/>
|
||||
<arg name="extensions" value="php"/>
|
||||
<arg name="basepath" value="."/>
|
||||
|
||||
@@ -150,7 +150,7 @@ When you receive feedback from these code quality tools, you can use AI assistan
|
||||
|
||||
1. Copy the output from the code quality tool
|
||||
2. Paste it into your AI assistant chat
|
||||
3. Ask the AI to help you understand and resolve the issues
|
||||
3. Request the AI's assistance to interpret and resolve the reported issues
|
||||
4. Apply the suggested fixes
|
||||
5. Commit the changes and verify that the issues are resolved
|
||||
|
||||
|
||||
Reference in New Issue
Block a user