docs: add contributor, security, and changelog docs - #23
Merged
Conversation
4 tasks
patramsey
force-pushed
the
docs/community-health
branch
from
August 2, 2026 18:39
8a54d1d to
0d5f266
Compare
4 tasks
The repo was public with a README and a LICENSE and nothing else — no statement of how to contribute, no conduct policy, no way to report a vulnerability privately, no release history outside the auto-generated tag notes. GitHub's community-standards checklist flagged all four. Everything here is tailored rather than boilerplate, because the generic version would be wrong in the places that matter for this tool: - CONTRIBUTING.md documents the two invariants that are easy to break by accident. POST is only retried when X-Idempotency-Key is set, and relaxing that can double-register a domain. dns/domain update are read-modify-write because the API does full PUT replacement, so a partial body silently drops fields. It also spells out why `-count=1` is required (internal/api/gen shells out to spec_to_30.py and reads namecom.api.yaml; Go's cache tracks neither) and that zz_generated.go and namecom.api.yaml are not hand-edited. - SECURITY.md scopes the categories that actually apply to a tool holding registrar credentials: token leakage through --debug/--debug-file or a config file, the token_cmd shell exec, a command whose real request diverges from its --dry-run preview, and sandbox/production confusion. It also says not to paste a live token into a report. - Issue templates ask for --dry-run output on mutating commands, which is the single most useful artifact for diagnosing one, and warn that --debug output contains request/response bodies even though the token is redacted. - CHANGELOG.md starts at 0.2.0. Reconstructing entries for the fourteen earlier tags would have meant inventing detail the commit history does not support, so it points at the releases page for those instead. .gitignore grows .superpowers/ and docs/plans/ alongside the existing .claude/ entry. Agent working artifacts are a record of how the work was produced, not something a contributor needs, and they land in the tree next to real source, which makes them easy to stage by accident. CLAUDE.md stays gitignored here, so CONTRIBUTING.md inlines the architecture context a contributor needs rather than linking to a file that does not exist on GitHub.
patramsey
force-pushed
the
docs/community-health
branch
from
August 2, 2026 18:48
0d5f266 to
f6c4d84
Compare
2 tasks
patramsey
added a commit
that referenced
this pull request
Aug 2, 2026
#24 merged without a changelog entry because CHANGELOG.md itself only arrived in #23, which landed at the same time. This backfills it. Also corrects "No user-facing behavior changes yet", which #24 made false: `namecom open` now rejects an argument that is not a plausible domain name rather than passing it through. Someone who was relying on `open` to accept an arbitrary string will notice, so it belongs under Changed as well as Security. The race fix in #25 is deliberately not listed. It is test-only bookkeeping with no user-visible effect, and Keep a Changelog is for notable changes rather than a commit log.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Docs and config only. No production code changes.
The repo was public with a README and a LICENSE and nothing else — no statement of how to contribute, no conduct policy, no private channel for reporting a vulnerability, no release history outside the auto-generated tag notes. GitHub's community-standards checklist flagged all four.
These are tailored rather than boilerplate, because the generic version is wrong in the places that matter for a tool holding registrar credentials.
CONTRIBUTING.mdDocuments the two invariants that are easy to break by accident:
POSTis only retried whenX-Idempotency-Keyis set. Relaxing that can double-register a domain.dns update/domain updateare read-modify-write, because the API does fullPUTreplacement. A partial body silently drops fields.Plus the things that aren't guessable from the tree: why
-count=1is required (internal/api/genshells out toscripts/spec_to_30.pyand readsnamecom.api.yaml; Go's test cache tracks neither, so a cached pass hides a broken preprocessor), thatzz_generated.goandnamecom.api.yamlare not hand-edited, and that re-vendoring the spec means updatingSPEC_SHAin the same commit.SECURITY.mdScopes the categories that actually apply here rather than generic ones: token leakage via
--debug/--debug-fileor config file modes, thetoken_cmdshell exec, a command whose real request diverges from its--dry-runpreview, and sandbox/production confusion. Says not to paste a live token into a report.Private vulnerability reporting has been enabled on the repo, so the link in this file resolves.
Issue / PR templates
The bug template asks for
--dry-runoutput on mutating commands — the single most useful artifact for diagnosing one — and warns that--debugoutput carries request/response bodies even though the token is redacted. The PR template has a matching checklist item forTestDryRunMatchesRealRequest_*.CHANGELOG.mdStarts at 0.2.0. Reconstructing entries for the fourteen earlier tags would have meant inventing detail the commit history doesn't support (
Feat/fix bugs (#9)), so it points at the releases page for those instead..gitignoreGrows
.superpowers/anddocs/plans/alongside the existing.claude/entry. Agent working artifacts are a record of how the work was produced, not something a contributor needs, and they land in the tree next to real source — which makes them easy to stage by accident.Note on
CLAUDE.mdIt stays gitignored here, so
CONTRIBUTING.mdinlines the architecture context a contributor needs instead of linking to a file that doesn't exist on GitHub.Test plan
go build ./... && go vet ./...clean