{"owner":"fatedier","repo":"frp","hasSkills":true,"totalSkillsCount":2,"totalTokensCount":1099,"categories":["subagent-persona","root-instruction"],"hasMcp":false,"mcpConfig":null,"found":["doc/agents/release.md","AGENTS.md"],"skills":{"doc/agents/release.md":"# Release Process\n\n## 1. Update Release Notes\n\nEdit `Release.md` in the project root with the changes for this version:\n\n```markdown\n## Features\n* ...\n\n## Improvements\n* ...\n\n## Fixes\n* ...\n```\n\nThis file is used by GoReleaser as the GitHub Release body.\n\n## 2. Bump Version\n\nUpdate the version string in `pkg/util/version/version.go`:\n\n```go\nvar version = \"0.X.0\"\n```\n\nCommit and push to `dev`:\n\n```bash\ngit add pkg/util/version/version.go Release.md\ngit commit -m \"bump version to vX.Y.Z\"\ngit push origin dev\n```\n\n## 3. Pre-release Validation\n\nRun the standard e2e suite locally:\n\n```bash\nmake e2e\n```\n\nFor releases that touch compatibility-sensitive areas such as login, control\nconnections, work connections, visitors, transport, or wire protocol handling,\nalso run the manual compatibility e2e suite:\n\n```bash\nmake e2e-compatibility\nmake e2e-compatibility-floor\n```\n\n`make e2e-compatibility` builds the current `frps` and `frpc`, resolves the\nrecent stable release baselines from GitHub, downloads or reuses their binaries,\nand tests current binaries against those historical releases. The default number\nof recent baselines is controlled by `FRP_COMPAT_BASELINE_COUNT` in the\n`Makefile`.\n\nDownloaded release binaries are cached under:\n\n```text\n.cache/e2e-compat/<version>/<os>_<arch>/\n```\n\nFor a release validation run that must be exactly reproducible, pass an explicit\nbaseline matrix instead of using the floating recent-release list:\n\n```bash\nFRP_COMPAT_BASELINE_VERSIONS=\"0.X.0 0.Y.0\" make e2e-compatibility\n```\n\nUse `make e2e-compatibility-smoke` for a quick single-baseline check while\niterating locally. If GitHub release metadata requests are rate-limited, set\n`GITHUB_TOKEN` or use `FRP_COMPAT_BASELINE_VERSIONS`.\n\nThe compatibility floor is a support-policy decision, not a value that should\nchange every release. Update `FRP_COMPAT_FLOOR_VERSION` only when the declared\ncompatibility window changes.\n\n## 4. Merge dev → master\n\nCreate a PR from `dev` to `master`:\n\n```bash\ngh pr create --base master --head dev --title \"bump version\"\n```\n\nWait for CI to pass, then merge using **merge commit** (not squash).\n\n## 5. Tag the Release\n\n```bash\ngit checkout master\ngit pull origin master\ngit tag -a vX.Y.Z -m \"bump version\"\ngit push origin vX.Y.Z\n```\n\n## 6. Trigger GoReleaser\n\nManually trigger the `goreleaser` workflow in GitHub Actions:\n\n```bash\ngh workflow run goreleaser --ref master\n```\n\nGoReleaser will:\n1. Run `package.sh` to cross-compile all platforms and create archives\n2. Create a GitHub Release with all packages, using `Release.md` as release notes\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `pkg/util/version/version.go` | Version string |\n| `Release.md` | Release notes (read by GoReleaser) |\n| `.goreleaser.yml` | GoReleaser config |\n| `package.sh` | Cross-compile and packaging script |\n| `.github/workflows/goreleaser.yml` | GitHub Actions workflow (manual trigger) |\n\n## Versioning\n\n- Minor release: `v0.X.0`\n- Patch release: `v0.X.Y` (e.g., `v0.62.1`)\n","AGENTS.md":"# AGENTS.md\n\n## Development Commands\n\n### Build\n- `make build` - Build both frps and frpc binaries\n- `make frps` - Build server binary only\n- `make frpc` - Build client binary only\n- `make all` - Build everything with formatting\n\n### Testing\n- `make test` - Run unit tests\n- `make e2e` - Run end-to-end tests\n- `make e2e-trace` - Run e2e tests with trace logging\n- `make alltest` - Run all tests including vet, unit tests, and e2e\n\n### Code Quality\n- `make fmt` - Run go fmt\n- `make fmt-more` - Run gofumpt for more strict formatting\n- `make gci` - Run gci import organizer\n- `make vet` - Run go vet\n- `golangci-lint run` - Run comprehensive linting (configured in .golangci.yml)\n\n### Assets\n- `make web` - Build web dashboards (frps and frpc)\n\n### Cleanup\n- `make clean` - Remove built binaries and temporary files\n\n## Testing\n\n- E2E tests using Ginkgo/Gomega framework\n- Mock servers in `/test/e2e/mock/`\n- Run: `make e2e` or `make alltest`\n\n## Agent Runbooks\n\nOperational procedures for agents are in `doc/agents/`:\n- `doc/agents/release.md` - Release process\n"},"files":{"doc/agents/release.md":"# Release Process\n\n## 1. Update Release Notes\n\nEdit `Release.md` in the project root with the changes for this version:\n\n```markdown\n## Features\n* ...\n\n## Improvements\n* ...\n\n## Fixes\n* ...\n```\n\nThis file is used by GoReleaser as the GitHub Release body.\n\n## 2. Bump Version\n\nUpdate the version string in `pkg/util/version/version.go`:\n\n```go\nvar version = \"0.X.0\"\n```\n\nCommit and push to `dev`:\n\n```bash\ngit add pkg/util/version/version.go Release.md\ngit commit -m \"bump version to vX.Y.Z\"\ngit push origin dev\n```\n\n## 3. Pre-release Validation\n\nRun the standard e2e suite locally:\n\n```bash\nmake e2e\n```\n\nFor releases that touch compatibility-sensitive areas such as login, control\nconnections, work connections, visitors, transport, or wire protocol handling,\nalso run the manual compatibility e2e suite:\n\n```bash\nmake e2e-compatibility\nmake e2e-compatibility-floor\n```\n\n`make e2e-compatibility` builds the current `frps` and `frpc`, resolves the\nrecent stable release baselines from GitHub, downloads or reuses their binaries,\nand tests current binaries against those historical releases. The default number\nof recent baselines is controlled by `FRP_COMPAT_BASELINE_COUNT` in the\n`Makefile`.\n\nDownloaded release binaries are cached under:\n\n```text\n.cache/e2e-compat/<version>/<os>_<arch>/\n```\n\nFor a release validation run that must be exactly reproducible, pass an explicit\nbaseline matrix instead of using the floating recent-release list:\n\n```bash\nFRP_COMPAT_BASELINE_VERSIONS=\"0.X.0 0.Y.0\" make e2e-compatibility\n```\n\nUse `make e2e-compatibility-smoke` for a quick single-baseline check while\niterating locally. If GitHub release metadata requests are rate-limited, set\n`GITHUB_TOKEN` or use `FRP_COMPAT_BASELINE_VERSIONS`.\n\nThe compatibility floor is a support-policy decision, not a value that should\nchange every release. Update `FRP_COMPAT_FLOOR_VERSION` only when the declared\ncompatibility window changes.\n\n## 4. Merge dev → master\n\nCreate a PR from `dev` to `master`:\n\n```bash\ngh pr create --base master --head dev --title \"bump version\"\n```\n\nWait for CI to pass, then merge using **merge commit** (not squash).\n\n## 5. Tag the Release\n\n```bash\ngit checkout master\ngit pull origin master\ngit tag -a vX.Y.Z -m \"bump version\"\ngit push origin vX.Y.Z\n```\n\n## 6. Trigger GoReleaser\n\nManually trigger the `goreleaser` workflow in GitHub Actions:\n\n```bash\ngh workflow run goreleaser --ref master\n```\n\nGoReleaser will:\n1. Run `package.sh` to cross-compile all platforms and create archives\n2. Create a GitHub Release with all packages, using `Release.md` as release notes\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `pkg/util/version/version.go` | Version string |\n| `Release.md` | Release notes (read by GoReleaser) |\n| `.goreleaser.yml` | GoReleaser config |\n| `package.sh` | Cross-compile and packaging script |\n| `.github/workflows/goreleaser.yml` | GitHub Actions workflow (manual trigger) |\n\n## Versioning\n\n- Minor release: `v0.X.0`\n- Patch release: `v0.X.Y` (e.g., `v0.62.1`)\n","AGENTS.md":"# AGENTS.md\n\n## Development Commands\n\n### Build\n- `make build` - Build both frps and frpc binaries\n- `make frps` - Build server binary only\n- `make frpc` - Build client binary only\n- `make all` - Build everything with formatting\n\n### Testing\n- `make test` - Run unit tests\n- `make e2e` - Run end-to-end tests\n- `make e2e-trace` - Run e2e tests with trace logging\n- `make alltest` - Run all tests including vet, unit tests, and e2e\n\n### Code Quality\n- `make fmt` - Run go fmt\n- `make fmt-more` - Run gofumpt for more strict formatting\n- `make gci` - Run gci import organizer\n- `make vet` - Run go vet\n- `golangci-lint run` - Run comprehensive linting (configured in .golangci.yml)\n\n### Assets\n- `make web` - Build web dashboards (frps and frpc)\n\n### Cleanup\n- `make clean` - Remove built binaries and temporary files\n\n## Testing\n\n- E2E tests using Ginkgo/Gomega framework\n- Mock servers in `/test/e2e/mock/`\n- Run: `make e2e` or `make alltest`\n\n## Agent Runbooks\n\nOperational procedures for agents are in `doc/agents/`:\n- `doc/agents/release.md` - Release process\n"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/fatedier/frp/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AGENTS.md\n\n## Development Commands\n\n### Build\n- `make build` - Build both frps and frpc binaries\n- `make frps` - Build server binary only\n- `make frpc` - Build client binary only\n- `make all` - Build everything with formatting\n\n### Testing\n- `make test` - Run unit tests\n- `make e2e` - Run end-to-end tests\n- `make e2e-trace` - Run e2e tests with trace logging\n- `make alltest` - Run all tests including vet, unit tests, and e2e\n\n### Code Quality\n- `make fmt` - Run go fmt\n- `make fmt-more` - Run gofumpt for more strict formatting\n- `make gci` - Run gci import organizer\n- `make vet` - Run go vet\n- `golangci-lint run` - Run comprehensive linting (configured in .golangci.yml)\n\n### Assets\n- `make web` - Build web dashboards (frps and frpc)\n\n### Cleanup\n- `make clean` - Remove built binaries and temporary files\n\n## Testing\n\n- E2E tests using Ginkgo/Gomega framework\n- Mock servers in `/test/e2e/mock/`\n- Run: `make e2e` or `make alltest`\n\n## Agent Runbooks\n\nOperational procedures for agents are in `doc/agents/`:\n- `doc/agents/release.md` - Release process\n","isInternal":false,"tokens":315,"sizeBytes":1063},{"name":"release.md","path":"doc/agents/release.md","rawUrl":"https://raw.githubusercontent.com/fatedier/frp/HEAD/doc/agents/release.md","title":"Subagent: release","category":"subagent-persona","format":"markdown","content":"# Release Process\n\n## 1. Update Release Notes\n\nEdit `Release.md` in the project root with the changes for this version:\n\n```markdown\n## Features\n* ...\n\n## Improvements\n* ...\n\n## Fixes\n* ...\n```\n\nThis file is used by GoReleaser as the GitHub Release body.\n\n## 2. Bump Version\n\nUpdate the version string in `pkg/util/version/version.go`:\n\n```go\nvar version = \"0.X.0\"\n```\n\nCommit and push to `dev`:\n\n```bash\ngit add pkg/util/version/version.go Release.md\ngit commit -m \"bump version to vX.Y.Z\"\ngit push origin dev\n```\n\n## 3. Pre-release Validation\n\nRun the standard e2e suite locally:\n\n```bash\nmake e2e\n```\n\nFor releases that touch compatibility-sensitive areas such as login, control\nconnections, work connections, visitors, transport, or wire protocol handling,\nalso run the manual compatibility e2e suite:\n\n```bash\nmake e2e-compatibility\nmake e2e-compatibility-floor\n```\n\n`make e2e-compatibility` builds the current `frps` and `frpc`, resolves the\nrecent stable release baselines from GitHub, downloads or reuses their binaries,\nand tests current binaries against those historical releases. The default number\nof recent baselines is controlled by `FRP_COMPAT_BASELINE_COUNT` in the\n`Makefile`.\n\nDownloaded release binaries are cached under:\n\n```text\n.cache/e2e-compat/<version>/<os>_<arch>/\n```\n\nFor a release validation run that must be exactly reproducible, pass an explicit\nbaseline matrix instead of using the floating recent-release list:\n\n```bash\nFRP_COMPAT_BASELINE_VERSIONS=\"0.X.0 0.Y.0\" make e2e-compatibility\n```\n\nUse `make e2e-compatibility-smoke` for a quick single-baseline check while\niterating locally. If GitHub release metadata requests are rate-limited, set\n`GITHUB_TOKEN` or use `FRP_COMPAT_BASELINE_VERSIONS`.\n\nThe compatibility floor is a support-policy decision, not a value that should\nchange every release. Update `FRP_COMPAT_FLOOR_VERSION` only when the declared\ncompatibility window changes.\n\n## 4. Merge dev → master\n\nCreate a PR from `dev` to `master`:\n\n```bash\ngh pr create --base master --head dev --title \"bump version\"\n```\n\nWait for CI to pass, then merge using **merge commit** (not squash).\n\n## 5. Tag the Release\n\n```bash\ngit checkout master\ngit pull origin master\ngit tag -a vX.Y.Z -m \"bump version\"\ngit push origin vX.Y.Z\n```\n\n## 6. Trigger GoReleaser\n\nManually trigger the `goreleaser` workflow in GitHub Actions:\n\n```bash\ngh workflow run goreleaser --ref master\n```\n\nGoReleaser will:\n1. Run `package.sh` to cross-compile all platforms and create archives\n2. Create a GitHub Release with all packages, using `Release.md` as release notes\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `pkg/util/version/version.go` | Version string |\n| `Release.md` | Release notes (read by GoReleaser) |\n| `.goreleaser.yml` | GoReleaser config |\n| `package.sh` | Cross-compile and packaging script |\n| `.github/workflows/goreleaser.yml` | GitHub Actions workflow (manual trigger) |\n\n## Versioning\n\n- Minor release: `v0.X.0`\n- Patch release: `v0.X.Y` (e.g., `v0.62.1`)\n","isInternal":false,"tokens":784,"sizeBytes":3000}],"systemPromptSnippet":"<yakaai_skills repo=\"fatedier/frp\">\n<!-- File: AGENTS.md (Tokens: ~315 | Category: root-instruction) -->\n# AGENTS.md\n\n## Development Commands\n\n### Build\n- `make build` - Build both frps and frpc binaries\n- `make frps` - Build server binary only\n- `make frpc` - Build client binary only\n- `make all` - Build everything with formatting\n\n### Testing\n- `make test` - Run unit tests\n- `make e2e` - Run end-to-end tests\n- `make e2e-trace` - Run e2e tests with trace logging\n- `make alltest` - Run all tests including vet, unit tests, and e2e\n\n### Code Quality\n- `make fmt` - Run go fmt\n- `make fmt-more` - Run gofumpt for more strict formatting\n- `make gci` - Run gci import organizer\n- `make vet` - Run go vet\n- `golangci-lint run` - Run comprehensive linting (configured in .golangci.yml)\n\n### Assets\n- `make web` - Build web dashboards (frps and frpc)\n\n### Cleanup\n- `make clean` - Remove built binaries and temporary files\n\n## Testing\n\n- E2E tests using Ginkgo/Gomega framework\n- Mock servers in `/test/e2e/mock/`\n- Run: `make e2e` or `make alltest`\n\n## Agent Runbooks\n\nOperational procedures for agents are in `doc/agents/`:\n- `doc/agents/release.md` - Release process\n\n<!-- File: doc/agents/release.md (Tokens: ~784 | Category: subagent-persona) -->\n# Release Process\n\n## 1. Update Release Notes\n\nEdit `Release.md` in the project root with the changes for this version:\n\n```markdown\n## Features\n* ...\n\n## Improvements\n* ...\n\n## Fixes\n* ...\n```\n\nThis file is used by GoReleaser as the GitHub Release body.\n\n## 2. Bump Version\n\nUpdate the version string in `pkg/util/version/version.go`:\n\n```go\nvar version = \"0.X.0\"\n```\n\nCommit and push to `dev`:\n\n```bash\ngit add pkg/util/version/version.go Release.md\ngit commit -m \"bump version to vX.Y.Z\"\ngit push origin dev\n```\n\n## 3. Pre-release Validation\n\nRun the standard e2e suite locally:\n\n```bash\nmake e2e\n```\n\nFor releases that touch compatibility-sensitive areas such as login, control\nconnections, work connections, visitors, transport, or wire protocol handling,\nalso run the manual compatibility e2e suite:\n\n```bash\nmake e2e-compatibility\nmake e2e-compatibility-floor\n```\n\n`make e2e-compatibility` builds the current `frps` and `frpc`, resolves the\nrecent stable release baselines from GitHub, downloads or reuses their binaries,\nand tests current binaries against those historical releases. The default number\nof recent baselines is controlled by `FRP_COMPAT_BASELINE_COUNT` in the\n`Makefile`.\n\nDownloaded release binaries are cached under:\n\n```text\n.cache/e2e-compat/<version>/<os>_<arch>/\n```\n\nFor a release validation run that must be exactly reproducible, pass an explicit\nbaseline matrix instead of using the floating recent-release list:\n\n```bash\nFRP_COMPAT_BASELINE_VERSIONS=\"0.X.0 0.Y.0\" make e2e-compatibility\n```\n\nUse `make e2e-compatibility-smoke` for a quick single-baseline check while\niterating locally. If GitHub release metadata requests are rate-limited, set\n`GITHUB_TOKEN` or use `FRP_COMPAT_BASELINE_VERSIONS`.\n\nThe compatibility floor is a support-policy decision, not a value that should\nchange every release. Update `FRP_COMPAT_FLOOR_VERSION` only when the declared\ncompatibility window changes.\n\n## 4. Merge dev → master\n\nCreate a PR from `dev` to `master`:\n\n```bash\ngh pr create --base master --head dev --title \"bump version\"\n```\n\nWait for CI to pass, then merge using **merge commit** (not squash).\n\n## 5. Tag the Release\n\n```bash\ngit checkout master\ngit pull origin master\ngit tag -a vX.Y.Z -m \"bump version\"\ngit push origin vX.Y.Z\n```\n\n## 6. Trigger GoReleaser\n\nManually trigger the `goreleaser` workflow in GitHub Actions:\n\n```bash\ngh workflow run goreleaser --ref master\n```\n\nGoReleaser will:\n1. Run `package.sh` to cross-compile all platforms and create archives\n2. Create a GitHub Release with all packages, using `Release.md` as release notes\n\n## Key Files\n\n| File | Purpose |\n|------|---------|\n| `pkg/util/version/version.go` | Version string |\n| `Release.md` | Release notes (read by GoReleaser) |\n| `.goreleaser.yml` | GoReleaser config |\n| `package.sh` | Cross-compile and packaging script |\n| `.github/workflows/goreleaser.yml` | GitHub Actions workflow (manual trigger) |\n\n## Versioning\n\n- Minor release: `v0.X.0`\n- Patch release: `v0.X.Y` (e.g., `v0.62.1`)\n</yakaai_skills>"}