# Feature Development Guide for AI Assistants

This document provides guidance for AI assistants to help with feature development for the Fix Plugin Does Not Exist Notices plugin.

## Feature Development Workflow

### 1. Create a Feature Branch

Always start by creating a feature branch from the main branch:

```bash
git checkout main
git pull github main
git checkout -b feature/descriptive-name
```

Use a descriptive name that clearly indicates what the feature is about.

### 2. Implement the Feature

When implementing a new feature:

- Follow WordPress coding standards
- Ensure all strings are translatable
- Add appropriate comments
- Consider performance implications
- Maintain backward compatibility

### 3. Update Documentation

Update relevant documentation to reflect the new feature:

- Add a description to CHANGELOG.md under an "Unreleased" section
- Update readme.txt if the feature affects user-facing functionality
- Update inline documentation/comments
- Remember that any feature addition will require a version increment in all relevant files

### 4. Testing

Test the feature thoroughly:

- Test with the latest WordPress version
- Test with the minimum supported WordPress version (5.0)
- Test with PHP 7.0+ (minimum supported version)
- Test in different environments (if possible)

### 5. Commit Changes

Make atomic commits with clear messages:

```bash
git add .
git commit -m "Add feature: descriptive name"
```

### 6. Prepare for Release

When the feature is ready to be released:

1. Create a version branch for the release:

```bash
git checkout -b v{MAJOR}.{MINOR}.{PATCH}
```

2. Merge your feature branch into the version branch:

```bash
git merge feature/descriptive-name --no-ff
```

3. Update version numbers and changelog entries

4. Follow the standard release process from this point

### 7. Push to Remote (Optional for Collaboration)

If you need to collaborate with others on the feature before it's ready for release:

```bash
git push github HEAD:feature/descriptive-name
git push gitea HEAD:feature/descriptive-name
```

### 8. Create Pull Request (Optional)

If the repository uses pull requests for code review, create a pull request from the feature branch to the version branch.

## Code Standards and Best Practices

### PHP Coding Standards

- Follow [WordPress PHP Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/php/)
- Use tabs for indentation, not spaces
- Use proper naming conventions:
  - Class names: `Class_Name`
  - Function names: `function_name`
  - Variable names: `$variable_name`

### JavaScript Coding Standards

- Follow [WordPress JavaScript Coding Standards](https://developer.wordpress.org/coding-standards/wordpress-coding-standards/javascript/)
- Use tabs for indentation, not spaces
- Use proper naming conventions:
  - Function names: `functionName`
  - Variable names: `variableName`

### Internationalization (i18n)

- Wrap all user-facing strings in appropriate translation functions:
  - `__()` for simple strings
  - `_e()` for echoed strings
  - `esc_html__()` for escaped strings
  - `esc_html_e()` for escaped and echoed strings
- Always use the plugin's text domain: `fix-plugin-does-not-exist-notices`

### Security Best Practices

- Validate and sanitize all input
- Escape all output
- Use nonces for form submissions
- Use capability checks for user actions

## Feature Types and Implementation Guidelines

### Admin Interface Features

When adding features to the admin interface:

- Use WordPress admin UI components for consistency
- Follow WordPress admin UI patterns
- Ensure accessibility compliance
- Add appropriate help text

### Plugin Functionality Features

When adding core functionality:

- Ensure compatibility with WordPress hooks system
- Consider performance impact
- Maintain backward compatibility
- Add appropriate error handling

### Integration Features

When adding integration with other plugins or services:

- Make integrations optional when possible
- Check if the integrated plugin/service is available before using it
- Provide fallback functionality when the integration is not available
- Document the integration requirements