docs: document NIPs and PR template usage#393
Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Pull Request Overview
This PR documents NIPs (Nostr Implementation Possibilities) and establishes standardized PR template usage across the nostr-java project. The changes create comprehensive contribution guidelines and update the CI workflow to enforce stricter naming conventions.
- Adds a complete index of 87 NIP specifications to AGENTS.md
- Creates CONTRIBUTING.md with detailed development guidelines and commit/PR title formatting requirements
- Updates the PR quality gate workflow to validate both PR titles and commit messages against the
type: descriptionformat
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| CONTRIBUTING.md | Creates new contributor guidelines with formatting rules and PR template requirements |
| AGENTS.md | Adds comprehensive NIP index and updates PR guidelines with detailed type list and naming requirements |
| .github/workflows/pr-quality-gate.yml | Updates CI workflow to validate commit messages and enforce stricter naming conventions |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
|
||
| - PR summaries must reference modified files with file path citations (e.g. `F:path/to/file.java†L1-L2`). | ||
| - PR titles and commit messages must follow the `type: description` naming format (e.g., `docs: update AGENTS`). | ||
| - PR titles and commit messages must follow the `type: description` naming format. |
There was a problem hiding this comment.
This line duplicates the formatting requirements already specified in lines 127-128. Consider removing this line to avoid redundancy and maintain consistency with the detailed specification below.
| - PR titles and commit messages must follow the `type: description` naming format. |
| const verbs = ['Add','Fix','Update','Refactor','Remove','Implement','Document','Docs','Test','Build','Improve','Feat','Enable','Disable','Migrate']; | ||
| const titleOK = new RegExp(`^(${verbs.join('|')})\\b.+`).test(title); | ||
| const types = ['feat','fix','docs','refactor','test','chore','ci','build','perf','style']; | ||
| const naming = `^(${types.join('|')}):\\s+[A-Z][^\\s]*\\s+.+`; |
There was a problem hiding this comment.
The regex pattern [A-Z][^\s]*\s+.+ requires the description to start with a capital letter followed by a non-whitespace character and then whitespace, but this doesn't properly validate the 'verb + object' requirement. For example, 'docs: A' would pass validation but isn't a proper verb + object phrase. Consider refining the pattern to better match the intended format.
| const naming = `^(${types.join('|')}):\\s+[A-Z][^\\s]*\\s+.+`; | |
| const naming = `^(${types.join('|')}):\\s+[A-Z][a-z]+\\s+[a-zA-Z0-9].+`; |
Summary
Testing
timeout 15 mvn -q verify(SLF4J: No SLF4J providers were found; build did not run)Network Access
https://chatgpt.com/codex/tasks/task_b_68a4d060692c833196c490b93709a438