chore: standardize placeholder hostnames on imagile.dev - #295
Merged
Conversation
The repo used five competing conventions for placeholder hostnames (example.com, company.com, mycompany, your-company, myteam). Three of those are real domains registered to third parties, so a user who copy-pasted a documented baseUrl would send auth headers to someone else's host. - Self-hosted placeholders now use <service>.imagile.dev, which has no wildcard DNS: a copy-pasted config fails at DNS resolution before any credential leaves the machine. .dev is HSTS-preloaded as a second layer. - Vendor-hosted SaaS keeps the vendor domain with imagile as the tenant (imagile.service-now.com, imagile.sdelements.com). - Checkmarx IAM realm placeholder mycompany -> imagile. - src/lib/git-context.test.ts keeps other.example.com; those tests assert behavior against a foreign host, so the domain must stay distinct. - Email placeholders keep you@example.com (RFC 2606) — this rule covers service hostnames, not mailboxes. - Documents the convention in CLAUDE.md, including the standing constraint never to add wildcard DNS to imagile.dev. - Remaps the 150 CHANGELOG.md commit links onto current SHAs. Closes #294 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Contributor
The hostname standardization correctly uses imagile.dev for service baseUrls, but the email exception rule (RFC 2606 example.com for mailbox placeholders) was not applied. Three spots were incorrectly changed: the user.email fixture in config.test.ts, the Jira email field in pncli-scaffold-prompt.md, and the curl smoke test email in infra/README.md. Co-authored-by: Sunny Kolattukudy <undefined@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Good change overall — the security rationale is solid and the CLAUDE.md documentation is thorough.
One self-contradiction caught and fixed in commit 8554c56: the PR adds an email exception rule ("email placeholders keep you@example.com") but then violated it in three spots:
src/lib/config.test.ts—user@imagile.devin theuser.emailfixture →user@example.compncli-scaffold-prompt.md—you@imagile.devin the Jiraemailfield example →you@example.cominfra/README.md—you@imagile.devin the curl smoke testemailfield →you@example.com
Two borderline cases left as-is (not mailbox placeholders):
user@imagile.devas Contrast Security username inhttp.test.ts— this is a service credential, not an address fieldbob@imagile.devas ADOAssignedTovalue inado/helpers.test.ts— same, user identity in a work-item context
The jenkins.myteam.imagile.dev in skills/pncli/jenkins.md is intentional — it illustrates the per-team subdomain pattern, and the safe domain (imagile.dev, no wildcard DNS) applies.
CHANGELOG.md SHA remapping is consistent with the PR description.
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.

Problem
The repo used five competing conventions for placeholder hostnames:
example.comcompany.commycompanyyour-companymyteamcompany.com,mycompany.com, andyour-company.comare real domains registered to third parties. pncli sends auth headers to whateverbaseUrlis configured, so a user who copy-pasted a documented value would ship their PAT to someone else's host.Having no written convention is also how two real internal hostnames reached a public test fixture unnoticed.
Changes
<service>.imagile.dev. That domain has no wildcard DNS, so a copy-pasted config fails at DNS resolution before any credential leaves the machine..devis HSTS-preloaded as a second layer.imagileas tenant:imagile.service-now.com,imagile.sdelements.com.mycompany→imagile.CLAUDE.mdgains aPlaceholder Hostnamessection plus a line in the Testing Rule, including the standing constraint never to add wildcard DNS toimagile.dev.CHANGELOG.md: the 150 commit links were remapped onto current SHAs.Deliberately unchanged
src/lib/git-context.test.tskeepsother.example.com— those tests assert behavior against a foreign host, so the domain has to stay visibly different. Usingimagile.devon both sides would defeat the assertion.you@example.com(RFC 2606). This rule covers service hostnames, not mailboxes.NOTICEis unchanged.site/src/files are touched, so the screenshot requirement does not apply.Verification
Closes #294
🤖 Generated with Claude Code