mirror of
https://github.com/github/awesome-copilot.git
synced 2026-02-20 02:15:12 +00:00
* add update-docs-on-code-change instructions * Apply suggestions from code review Modified one of the suggestions, clarifying the terms and instruction file configuration. If possible look over and see if another edit is needed. Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
550 lines
18 KiB
Markdown
550 lines
18 KiB
Markdown
---
|
|
description: 'Automatically update README.md and documentation files when application code changes require documentation updates'
|
|
applyTo: '**/*.{md,js,mjs,cjs,ts,tsx,jsx,py,java,cs,go,rb,php,rs,cpp,c,h,hpp}'
|
|
---
|
|
|
|
# Update Documentation on Code Change
|
|
|
|
## Overview
|
|
|
|
Ensure documentation stays synchronized with code changes by automatically detecting when README.md,
|
|
API documentation, configuration guides, and other documentation files need updates based on code
|
|
modifications.
|
|
|
|
## Instruction Sections and Configuration
|
|
|
|
The following parts of this section, `Instruction Sections and Configurable Instruction Sections`
|
|
and `Instruction Configuration` are only relevant to THIS instruction file, and are meant to be a
|
|
method to easily modify how the Copilot instructions are implemented. Essentially the two parts
|
|
are meant to turn portions or sections of the actual Copilot instructions on or off, and allow for
|
|
custom cases and conditions for when and how to implement certain sections of this document.
|
|
|
|
### Instruction Sections and Configurable Instruction Sections
|
|
|
|
There are several instruction sections in this document. The start of an instruction section is
|
|
indicated by a level two header. Call this an **INSTRUCTION SECTION**. Some instruction
|
|
sections are configurable. Some are not configurable and will always be used.
|
|
|
|
Instruction sections that ARE configurable are not required, and are subject to additional context
|
|
and/or conditions. Call these **CONFIGURABLE INSTRUCTION SECTIONS**.
|
|
|
|
**Configurable instruction sections** will have the section's configuration property appended to
|
|
the level two header, wrapped in backticks (e.g., `apply-this`). Call this the
|
|
**CONFIGURABLE PROPERTY**.
|
|
|
|
The **configurable property** will be declared and defined in the **Instruction Configuration**
|
|
portion of this section. They are booleans. If `true`, then apply, utilize, and/or follow the
|
|
instructions in that section.
|
|
|
|
Each **configurable instruction section** will also have a sentence that follows the section's
|
|
level two header with the section's configuration details. Call this the **CONFIGURATION DETAIL**.
|
|
|
|
The **configuration detail** is a subset of rules that expand upon the configurable instruction
|
|
section. This allows for custom cases and/or conditions to be checked that will determine the final
|
|
implementation for that **configurable instruction section**.
|
|
|
|
Before resolving on how to apply a **configurable instruction section**, check the
|
|
**configurable property** for a nested and/or corresponding `apply-condition`, and utilize the `apply-condition` when settling on the final approach for the **configurable instruction section**. By
|
|
default the `apply-condition` for each **configurable property** is unset, but an example of a set
|
|
`apply-condition` could be something like:
|
|
|
|
- **apply-condition** :
|
|
` this.parent.property = (git.branch == "master") ? this.parent.property = true : this.parent.property = false; `
|
|
|
|
The sum of all the **constant instructions sections**, and **configurable instruction sections**
|
|
will determine the complete instructions to follow. Call this the **COMPILED INSTRUCTIONS**.
|
|
|
|
The **compiled instructions** are dependent on the configuration. Each instruction section
|
|
included in the **compiled instructions** will be interpreted and utilized AS IF a separate set
|
|
of instructions that are independent of the entirety of this instruction file. Call this the
|
|
**FINAL PROCEDURE**.
|
|
|
|
### Instruction Configuration
|
|
|
|
- **apply-doc-file-structure** : true
|
|
- **apply-condition** : unset
|
|
- **apply-doc-verification** : true
|
|
- **apply-condition** : unset
|
|
- **apply-doc-quality-standard** : true
|
|
- **apply-condition** : unset
|
|
- **apply-automation-tooling** : true
|
|
- **apply-condition** : unset
|
|
- **apply-doc-patterns** : true
|
|
- **apply-condition** : unset
|
|
- **apply-best-practices** : true
|
|
- **apply-condition** : unset
|
|
- **apply-validation-commands** : true
|
|
- **apply-condition** : unset
|
|
- **apply-maintenance-schedule** : true
|
|
- **apply-condition** : unset
|
|
- **apply-git-integration** : false
|
|
- **apply-condition** : unset
|
|
|
|
<!--
|
|
| Configuration Property | Default | Description | When to Enable/Disable |
|
|
|-------------------------------|---------|-----------------------------------------------------------------------------|-------------------------------------------------------------|
|
|
| apply-doc-file-structure | true | Ensures documentation follows a consistent file structure. | Disable if you want to allow free-form doc organization. |
|
|
| apply-doc-verification | true | Verifies that documentation matches code changes. | Disable if verification is handled elsewhere. |
|
|
| apply-doc-quality-standard | true | Enforces documentation quality standards. | Disable if quality standards are not required. |
|
|
| apply-automation-tooling | true | Uses automation tools to update documentation. | Disable if you prefer manual documentation updates. |
|
|
| apply-doc-patterns | true | Applies common documentation patterns and templates. | Disable for custom or unconventional documentation styles. |
|
|
| apply-best-practices | true | Enforces best practices in documentation. | Disable if best practices are not a priority. |
|
|
| apply-validation-commands | true | Runs validation commands to check documentation correctness. | Disable if validation is not needed. |
|
|
| apply-maintenance-schedule | true | Schedules regular documentation maintenance. | Disable if maintenance is managed differently. |
|
|
| apply-git-integration | false | Integrates documentation updates with Git workflows. | Enable if you want automatic Git integration. |
|
|
-->
|
|
## When to Update Documentation
|
|
|
|
### Trigger Conditions
|
|
|
|
Automatically check if documentation updates are needed when:
|
|
|
|
- New features or functionality are added
|
|
- API endpoints, methods, or interfaces change
|
|
- Breaking changes are introduced
|
|
- Dependencies or requirements change
|
|
- Configuration options or environment variables are modified
|
|
- Installation or setup procedures change
|
|
- Command-line interfaces or scripts are updated
|
|
- Code examples in documentation become outdated
|
|
|
|
## Documentation Update Rules
|
|
|
|
### README.md Updates
|
|
|
|
**Always update README.md when:**
|
|
|
|
- Adding new features or capabilities
|
|
- Add feature description to "Features" section
|
|
- Include usage examples if applicable
|
|
- Update table of contents if present
|
|
|
|
- Modifying installation or setup process
|
|
- Update "Installation" or "Getting Started" section
|
|
- Revise dependency requirements
|
|
- Update prerequisite lists
|
|
|
|
- Adding new CLI commands or options
|
|
- Document command syntax and examples
|
|
- Include option descriptions and default values
|
|
- Add usage examples
|
|
|
|
- Changing configuration options
|
|
- Update configuration examples
|
|
- Document new environment variables
|
|
- Update config file templates
|
|
|
|
### API Documentation Updates
|
|
|
|
**Sync API documentation when:**
|
|
|
|
- New endpoints are added
|
|
- Document HTTP method, path, parameters
|
|
- Include request/response examples
|
|
- Update OpenAPI/Swagger specs
|
|
|
|
- Endpoint signatures change
|
|
- Update parameter lists
|
|
- Revise response schemas
|
|
- Document breaking changes
|
|
|
|
- Authentication or authorization changes
|
|
- Update authentication examples
|
|
- Revise security requirements
|
|
- Update API key/token documentation
|
|
|
|
### Code Example Synchronization
|
|
|
|
**Verify and update code examples when:**
|
|
|
|
- Function signatures change
|
|
- Update all code snippets using the function
|
|
- Verify examples still compile/run
|
|
- Update import statements if needed
|
|
|
|
- API interfaces change
|
|
- Update example requests and responses
|
|
- Revise client code examples
|
|
- Update SDK usage examples
|
|
|
|
- Best practices evolve
|
|
- Replace outdated patterns in examples
|
|
- Update to use current recommended approaches
|
|
- Add deprecation notices for old patterns
|
|
|
|
### Configuration Documentation
|
|
|
|
**Update configuration docs when:**
|
|
|
|
- New environment variables are added
|
|
- Add to .env.example file
|
|
- Document in README.md or docs/configuration.md
|
|
- Include default values and descriptions
|
|
|
|
- Config file structure changes
|
|
- Update example config files
|
|
- Document new options
|
|
- Mark deprecated options
|
|
|
|
- Deployment configuration changes
|
|
- Update Docker/Kubernetes configs
|
|
- Revise deployment guides
|
|
- Update infrastructure-as-code examples
|
|
|
|
### Migration and Breaking Changes
|
|
|
|
**Create migration guides when:**
|
|
|
|
- Breaking API changes occur
|
|
- Document what changed
|
|
- Provide before/after examples
|
|
- Include step-by-step migration instructions
|
|
|
|
- Major version updates
|
|
- List all breaking changes
|
|
- Provide upgrade checklist
|
|
- Include common migration issues and solutions
|
|
|
|
- Deprecating features
|
|
- Mark deprecated features clearly
|
|
- Suggest alternative approaches
|
|
- Include timeline for removal
|
|
|
|
## Documentation File Structure `apply-doc-file-structure`
|
|
|
|
If `apply-doc-file-structure == true`, then apply the following configurable instruction section.
|
|
|
|
### Standard Documentation Files
|
|
|
|
Maintain these documentation files and update as needed:
|
|
|
|
- **README.md**: Project overview, quick start, basic usage
|
|
- **CHANGELOG.md**: Version history and user-facing changes
|
|
- **docs/**: Detailed documentation
|
|
- `installation.md`: Setup and installation guide
|
|
- `configuration.md`: Configuration options and examples
|
|
- `api.md`: API reference documentation
|
|
- `contributing.md`: Contribution guidelines
|
|
- `migration-guides/`: Version migration guides
|
|
- **examples/**: Working code examples and tutorials
|
|
|
|
### Changelog Management
|
|
|
|
**Add changelog entries for:**
|
|
|
|
- New features (under "Added" section)
|
|
- Bug fixes (under "Fixed" section)
|
|
- Breaking changes (under "Changed" section with **BREAKING** prefix)
|
|
- Deprecated features (under "Deprecated" section)
|
|
- Removed features (under "Removed" section)
|
|
- Security fixes (under "Security" section)
|
|
|
|
**Changelog format:**
|
|
|
|
```markdown
|
|
## [Version] - YYYY-MM-DD
|
|
|
|
### Added
|
|
- New feature description with reference to PR/issue
|
|
|
|
### Changed
|
|
- **BREAKING**: Description of breaking change
|
|
- Other changes
|
|
|
|
### Fixed
|
|
- Bug fix description
|
|
```
|
|
|
|
## Documentation Verification `apply-doc-verification`
|
|
|
|
If `apply-doc-verification == true`, then apply the following configurable instruction section.
|
|
|
|
### Before Applying Changes
|
|
|
|
**Check documentation completeness:**
|
|
|
|
1. All new public APIs are documented
|
|
2. Code examples compile and run
|
|
3. Links in documentation are valid
|
|
4. Configuration examples are accurate
|
|
5. Installation steps are current
|
|
6. README.md reflects current state
|
|
|
|
### Documentation Tests
|
|
|
|
**Include documentation validation:**
|
|
|
|
#### Example Tasks
|
|
|
|
- Verify code examples in docs compile/run
|
|
- Check for broken internal/external links
|
|
- Validate configuration examples against schemas
|
|
- Ensure API examples match current implementation
|
|
|
|
```bash
|
|
# Example validation commands
|
|
npm run docs:check # Verify docs build
|
|
npm run docs:test-examples # Test code examples
|
|
npm run docs:lint # Check for issues
|
|
```
|
|
|
|
## Documentation Quality Standards `apply-doc-quality-standard`
|
|
|
|
If `apply-doc-quality-standard == true`, then apply the following configurable instruction section.
|
|
|
|
### Writing Guidelines
|
|
|
|
- Use clear, concise language
|
|
- Include working code examples
|
|
- Provide both basic and advanced examples
|
|
- Use consistent terminology
|
|
- Include error handling examples
|
|
- Document edge cases and limitations
|
|
|
|
### Code Example Format
|
|
|
|
```markdown
|
|
### Example: [Clear description of what example demonstrates]
|
|
|
|
\`\`\`language
|
|
// Include necessary imports/setup
|
|
import { function } from 'package';
|
|
|
|
// Complete, runnable example
|
|
const result = function(parameter);
|
|
console.log(result);
|
|
\`\`\`
|
|
|
|
**Output:**
|
|
\`\`\`
|
|
expected output
|
|
\`\`\`
|
|
```
|
|
|
|
### API Documentation Format
|
|
|
|
```markdown
|
|
### `functionName(param1, param2)`
|
|
|
|
Brief description of what the function does.
|
|
|
|
**Parameters:**
|
|
- `param1` (type): Description of parameter
|
|
- `param2` (type, optional): Description with default value
|
|
|
|
**Returns:**
|
|
- `type`: Description of return value
|
|
|
|
**Example:**
|
|
\`\`\`language
|
|
const result = functionName('value', 42);
|
|
\`\`\`
|
|
|
|
**Throws:**
|
|
- `ErrorType`: When and why error is thrown
|
|
```
|
|
|
|
## Automation and Tooling `apply-automation-tooling`
|
|
|
|
If `apply-automation-tooling == true`, then apply the following configurable instruction section.
|
|
|
|
### Documentation Generation
|
|
|
|
**Use automated tools when available:**
|
|
|
|
#### Automated Tool Examples
|
|
|
|
- JSDoc/TSDoc for JavaScript/TypeScript
|
|
- Sphinx/pdoc for Python
|
|
- Javadoc for Java
|
|
- xmldoc for C#
|
|
- godoc for Go
|
|
- rustdoc for Rust
|
|
|
|
### Documentation Linting
|
|
|
|
**Validate documentation with:**
|
|
|
|
- Markdown linters (markdownlint)
|
|
- Link checkers (markdown-link-check)
|
|
- Spell checkers (cspell)
|
|
- Code example validators
|
|
|
|
### Pre-update Hooks
|
|
|
|
**Add pre-commit checks for:**
|
|
|
|
- Documentation build succeeds
|
|
- No broken links
|
|
- Code examples are valid
|
|
- Changelog entry exists for changes
|
|
|
|
## Common Documentation Patterns `apply-doc-patterns`
|
|
|
|
If `apply-doc-patterns == true`, then apply the following configurable instruction section.
|
|
|
|
### Feature Documentation Template
|
|
|
|
```markdown
|
|
## Feature Name
|
|
|
|
Brief description of the feature.
|
|
|
|
### Usage
|
|
|
|
Basic usage example with code snippet.
|
|
|
|
### Configuration
|
|
|
|
Configuration options with examples.
|
|
|
|
### Advanced Usage
|
|
|
|
Complex scenarios and edge cases.
|
|
|
|
### Troubleshooting
|
|
|
|
Common issues and solutions.
|
|
```
|
|
|
|
### API Endpoint Documentation Template
|
|
|
|
```markdown
|
|
### `HTTP_METHOD /api/endpoint`
|
|
|
|
Description of what the endpoint does.
|
|
|
|
**Request:**
|
|
\`\`\`json
|
|
{
|
|
"param": "value"
|
|
}
|
|
\`\`\`
|
|
|
|
**Response:**
|
|
\`\`\`json
|
|
{
|
|
"result": "value"
|
|
}
|
|
\`\`\`
|
|
|
|
**Status Codes:**
|
|
- 200: Success
|
|
- 400: Bad request
|
|
- 401: Unauthorized
|
|
```
|
|
|
|
## Best Practices `apply-best-practices`
|
|
|
|
If `apply-best-practices == true`, then apply the following configurable instruction section.
|
|
|
|
### Do's
|
|
|
|
- ✅ Update documentation in the same commit as code changes
|
|
- ✅ Include before/after examples for changes to be reviewed before applying
|
|
- ✅ Test code examples before committing
|
|
- ✅ Use consistent formatting and terminology
|
|
- ✅ Document limitations and edge cases
|
|
- ✅ Provide migration paths for breaking changes
|
|
- ✅ Keep documentation DRY (link instead of duplicating)
|
|
|
|
### Don'ts
|
|
|
|
- ❌ Commit code changes without updating documentation
|
|
- ❌ Leave outdated examples in documentation
|
|
- ❌ Document features that don't exist yet
|
|
- ❌ Use vague or ambiguous language
|
|
- ❌ Forget to update changelog
|
|
- ❌ Ignore broken links or failing examples
|
|
- ❌ Document implementation details users don't need
|
|
|
|
## Validation Example Commands `apply-validation-commands`
|
|
|
|
If `apply-validation-commands == true`, then apply the following configurable instruction section.
|
|
|
|
Example scripts to apply to your project for documentation validation:
|
|
|
|
```json
|
|
{
|
|
"scripts": {
|
|
"docs:build": "Build documentation",
|
|
"docs:test": "Test code examples in docs",
|
|
"docs:lint": "Lint documentation files",
|
|
"docs:links": "Check for broken links",
|
|
"docs:spell": "Spell check documentation",
|
|
"docs:validate": "Run all documentation checks"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Maintenance Schedule `apply-maintenance-schedule`
|
|
|
|
If `apply-maintenance-schedule == true`, then apply the following configurable instruction section.
|
|
|
|
### Regular Reviews
|
|
|
|
- **Monthly**: Review documentation for accuracy
|
|
- **Per release**: Update version numbers and examples
|
|
- **Quarterly**: Check for outdated patterns or deprecated features
|
|
- **Annually**: Comprehensive documentation audit
|
|
|
|
### Deprecation Process
|
|
|
|
When deprecating features:
|
|
|
|
1. Add deprecation notice to documentation
|
|
2. Update examples to use recommended alternatives
|
|
3. Create migration guide
|
|
4. Update changelog with deprecation notice
|
|
5. Set timeline for removal
|
|
6. In next major version, remove deprecated feature and docs
|
|
|
|
## Git Integration `apply-git-integration`
|
|
|
|
If `apply-git-integration == true`, then apply the following configurable instruction section.
|
|
|
|
### Pull Request Requirements
|
|
|
|
**Documentation must be updated in the same PR as code changes:**
|
|
|
|
- Document new features in the feature PR
|
|
- Update examples when code changes
|
|
- Add changelog entries with code changes
|
|
- Update API docs when interfaces change
|
|
|
|
### Documentation Review
|
|
|
|
**During code review, verify:**
|
|
|
|
- Documentation accurately describes the changes
|
|
- Examples are clear and complete
|
|
- No undocumented breaking changes
|
|
- Changelog entry is appropriate
|
|
- Migration guides are provided if needed
|
|
|
|
## Review Checklist
|
|
|
|
Before considering documentation complete, and concluding on the **final procedure**:
|
|
|
|
- [ ] **Compiled instructions** are based on the sum of **constant instruction sections** and
|
|
**configurable instruction sections**
|
|
- [ ] README.md reflects current project state
|
|
- [ ] All new features are documented
|
|
- [ ] Code examples are tested and work
|
|
- [ ] API documentation is complete and accurate
|
|
- [ ] Configuration examples are up to date
|
|
- [ ] Breaking changes are documented with migration guide
|
|
- [ ] CHANGELOG.md is updated
|
|
- [ ] Links are valid and not broken
|
|
- [ ] Installation instructions are current
|
|
- [ ] Environment variables are documented
|
|
|
|
## Updating Documentation on Code Change GOAL
|
|
|
|
- Keep documentation close to code when possible
|
|
- Use documentation generators for API reference
|
|
- Maintain living documentation that evolves with code
|
|
- Consider documentation as part of feature completeness
|
|
- Review documentation in code reviews
|
|
- Make documentation easy to find and navigate
|