[teamai] Push 87 resource(s) from XingfenD
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
# Project Documentation
|
||||
|
||||
→ See `samber/cc-skills-golang@golang-continuous-integration` skill for automating changelog generation and release workflows.
|
||||
|
||||
## README.md
|
||||
|
||||
A LICENSE file MUST exist in every project. A README is the front page of your project. Make it simple, clear, and scannable. A copy-paste template with empty sections is available at [templates/README.md](./templates/README.md).
|
||||
|
||||
### Section Order
|
||||
|
||||
Follow this exact order (all sections are in the template):
|
||||
|
||||
1. **Title** — project name as `# heading`
|
||||
2. **Badges** — shields.io pictograms (Go version, license, CI, coverage, Go Report Card)
|
||||
3. **Summary** — 1-2 sentences explaining what the project does
|
||||
4. **Demo** — code snippet (libraries), GIF/video (CLIs), or screenshot (web UIs)
|
||||
5. **Getting Started** — installation + minimal working example
|
||||
6. **Features / Specification** — the longest section, organized by feature area
|
||||
7. **Contributing** — link to CONTRIBUTING.md or inline if very short
|
||||
8. **License** — license name + link
|
||||
|
||||
The template includes commented-out sections for applications (binary download table, Docker, Homebrew) that you can uncomment as needed.
|
||||
|
||||
---
|
||||
|
||||
## CONTRIBUTING.md
|
||||
|
||||
The goal: a new contributor should be able to clone the repo, make a change, and run the tests **in under 10 minutes**. If your project takes longer, add tooling to fix that.
|
||||
|
||||
Copy the template from [templates/CONTRIBUTING.md](./templates/CONTRIBUTING.md).
|
||||
|
||||
### The 10-Minute Rule
|
||||
|
||||
If setup takes more than 10 minutes, add these improvements:
|
||||
|
||||
| Problem | Solution |
|
||||
| --- | --- |
|
||||
| Complex build steps | Add a `Makefile` with `make build`, `make test`, `make lint` |
|
||||
| External service dependencies | Add `docker-compose.yml` for local dev |
|
||||
| Inconsistent dev environments | Add `.devcontainer/` for VS Code devcontainers |
|
||||
| Slow test suite | Separate unit tests (fast) from integration tests (build tags) |
|
||||
| Missing documentation | Add `make help` that lists available targets |
|
||||
|
||||
---
|
||||
|
||||
## Changelog
|
||||
|
||||
CHANGELOG MUST be updated for every release. Track notable changes for each release. Use [Keep a Changelog](https://keepachangelog.com/) format. Copy the template from [templates/CHANGELOG.md](./templates/CHANGELOG.md).
|
||||
|
||||
### Format
|
||||
|
||||
```markdown
|
||||
## [1.2.0] - 2026-03-08
|
||||
|
||||
### Added
|
||||
|
||||
- New `WithTimeout` option for client configuration
|
||||
|
||||
### Changed
|
||||
|
||||
- Improved retry logic to use exponential backoff
|
||||
|
||||
### Fixed
|
||||
|
||||
- Race condition in connection pool under heavy load
|
||||
|
||||
### Deprecated
|
||||
|
||||
- `SetTimeout()` method — use `WithTimeout()` option instead
|
||||
|
||||
[1.2.0]: https://github.com/{owner}/{repo}/compare/v1.1.0...v1.2.0
|
||||
```
|
||||
|
||||
### Change Categories
|
||||
|
||||
- **Added** — new features
|
||||
- **Changed** — changes in existing functionality
|
||||
- **Deprecated** — features that will be removed
|
||||
- **Removed** — removed features
|
||||
- **Fixed** — bug fixes
|
||||
- **Security** — vulnerability fixes
|
||||
|
||||
### GitHub Releases as Alternative
|
||||
|
||||
For simpler projects, GitHub Releases can replace a CHANGELOG file. GoReleaser auto-generates release notes from git commits.
|
||||
|
||||
---
|
||||
|
||||
## Distribution
|
||||
|
||||
**YOU MUST offer multiple installation paths** (binaries, containers, APT/Homebrew/... package managers, source). Because:
|
||||
|
||||
- Each installation method eliminates friction for a different user segment
|
||||
- Users adopt tools that fit their workflow, not tools that force workflow changes
|
||||
- A single installation path is a hidden tax on adoption—DevOps engineers skip tools requiring npm, macOS developers skip tools without Homebrew
|
||||
- Tools users _want to_ use spread faster than tools users _have to_ accommodate
|
||||
|
||||
### Dockerfile Best Practices
|
||||
|
||||
Use multi-stage builds with a minimal final image:
|
||||
|
||||
```dockerfile
|
||||
# Build stage
|
||||
FROM golang:1.26-alpine AS builder
|
||||
WORKDIR /app
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
COPY . .
|
||||
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /app/binary ./cmd/server
|
||||
|
||||
# Final stage
|
||||
FROM gcr.io/distroless/static-debian12:nonroot
|
||||
COPY --from=builder /app/binary /binary
|
||||
ENTRYPOINT ["/binary"]
|
||||
```
|
||||
Reference in New Issue
Block a user