Imported from edcalderon/hashpass.tech (
AGENTS.md). Install upstream withnpx skills add edcalderon/hashpass.tech. Copyright stays with the author.
HASHPASS Agent Instructions
Start Here
- Read
CLAUDE.mdbefore any release or Android deployment work. - Treat
CLAUDE.mdas the source of truth for versioning, push order, and release flow. - If
CLAUDE.mdandREADME.mddiffer, stop and ask before changing the release path.
Codebase Memory MCP
Use codebase-memory-mcp first for repo discovery and fast checks.
- Start with
codebase-memory-mcp cli list_projectsandcodebase-memory-mcp cli index_status. - Prefer
search_graph,trace_path,get_code_snippet,query_graph, andget_architecturebefore opening many files or running broad grep. - Use
search_code,rg, or direct file reads only for literals, config values, generated files, or when the graph has already narrowed the target. - If the project is missing or stale, re-index
/home/ed/Documents/HASH/hashpass.techand then repeat the graph search.
Browser Fetch And Test Tools
Use the installed browser tools for page fetches, responsive checks, and browser QA:
- Start with PinchTab for low-token page reads:
pinchtab daemon,pinchtab health,pinchtab nav <url>,pinchtab text, andpinchtab snap. - Use
browser-usefor autonomous multi-page form workflows. It is installed as auvuser tool; local Chrome control requires enablingchrome://inspect/#remote-debugging, or a trusted Browser Use Cloud /BU_CDP_WStarget. - Use
agent-browserfor auth-heavy flows, recordings, ref-based actions, and browser diagnostics. Runagent-browser doctor, thenagent-browser skills get corefor current instructions.
Do not put credentials, cookies, auth tokens, AWS account IDs, or private .env values in prompts, docs, screenshots, recordings, or logs.
AWS Account Boundary
hashpassis the only production AWS CLI profile. Use it for all HASHPASS deploys, cost checks, budgets, Route 53, CloudFront, Lambda, S3, and Terraform.defaultis a legacy LSTS account undergoing decommissioning. Do not deploy, create infrastructure, or place a HASHPASS budget there.- Before any AWS mutation, run a non-printing
sts get-caller-identitycheck against the intended profile and compare it with the private expected account ID. - Production cost ceiling: USD 50/month. The budget is
hashpass-production-monthly-max-50-usdin thehashpassaccount.
Deployment Command Contract
When the user says deploy, release, or release patch, complete the full production release unless the user limits the scope.
The full release includes:
- Validate the current task changes.
- Commit the intended changes on
develop. - Push
developtooriginandupstream. - Run
npm run release:promoteondevelop. As of 2026-07-13 this also runs the real version bump and changelog, committing it as its ownchore: release vX.Y.Zcommit before opening the PR — the PR diff is the release, version bump included. - Wait for
@edcalderonapproval, and keep patch coverage (new/changed lines in the PR) at or above 69% with the GitHub security scans passing before merging the PR.mainis enforced by an active GitHub ruleset (id18627241) — direct pushes tomainare rejected, so this PR is the only way in. - Merge the PR. That is the last manual step. Do not run
npm run release:patchonmainand do not manually syncdevelop—.github/workflows/release-tag-on-merge.ymlfires automatically on the merge and does both: tags the exact merge commit asvX.Y.Z(the version already bumped inside the PR, no second bump onmain) and fast-forwardsdevelopto match. Requires theRELEASE_AUTOMATION_TOKENrepo secret; the job fails loudly with a clear message if that secret is missing rather than silently degrading. - Do not trigger the Android release workflow manually.
.github/workflows/mobile-release-on-tag.ymlauto-dispatchesmobile-android-release.ymlon thev*.*.*tag push from step 6. Confirmed 2026-07-13: runninggh workflow run mobile-android-release.ymlafter a merge creates a duplicate run racing the auto-triggered one for the same Android version code — only dispatch it manually for a retry on an already-tagged version or a non-default track/environment. - Verify the Android workflow and the web/API deployment checks, including the API version endpoint guard.
upstream(the personal-fork backup remote) is not synced byrelease-tag-on-merge.yml— no token available to that workflow can reach a different account's fork. Re-sync manually only if needed:git push upstream develop <TAG_NAME>.
Do not report a deployment as complete while a required push, branch sync, release workflow, or deployment check is pending or failed. See .agents/active/task-release-flow-automation.md (or .agents/done/ once closed out) for the full design and incident history behind this flow.
Do not report the web deployment as complete if https://api.hashpass.tech/api/config/versions or https://api-dev.hashpass.tech/api/config/versions still reports an older version than the release.
Do not hand-edit release artifacts or perform a release by hand; the release scripts own the version bump, changelog, README sync, tag, and push sequence.
The Husky pre-commit hook runs the README sync guard, so a stale changelog/README pair should be fixed with npm run update-readme before committing.
Versioning
- Never edit version numbers in
package.json,app.json, or the mobile version files by hand. - Never hand-edit
CHANGELOG.mdor the README latest-changes section to force a release. Use the repo release scripts and README sync guard instead. - Use the release script for version bumps:
npm run release:patchnpm run release:minornpm run release:major
- The release script is responsible for syncing version fields, creating the commit, tagging the release, and pushing the release branch.
npm run release:promoteprepares the protecteddevelop -> mainPR instead of direct-pushing tomain.- Never reuse or move an existing release tag.
- If the requested version already exists or its Android
versionCodehas shipped, create the next patch version.
Android Release Flow
- Make and validate the code change.
- Run the release script for the new version.
- Trigger
.github/workflows/mobile-android-release.ymlwith the version tag created by the release script. - Use the workflow inputs documented in
CLAUDE.mdand keep the backend, environment, and runner consistent with the release target. - After the release, sync
developwithmain. - Push to
originfirst, then push toupstreamas backup.
Push Rules
originis the primary CI/CD remote.upstreamis the backup fork.- Do not skip the
developsync after a release. - A completed release leaves
origin/main,origin/develop,upstream/main, andupstream/developat the same release commit.
UI design system
- Before UI work, read
DESIGN.mdand the relevant production Storybook story. - Reuse
@hashpass/ui/tokensand@hashpass/ui/primitives; do not add local card, badge, chip, button or field variants when a shared role already exists. pnpm check:design-systemmust pass. Never regenerate the design-debt baseline simply to approve new literals; document and review intentional exceptions.- Update production-component stories with variants, interaction states, long translations, dark/light modes and mobile behavior when changing primitives.
- Respect application and system reduced motion. Keep native effects simpler than web effects, pause offscreen media, and preserve accessible names/touch targets.
- Impeccable is design assistance;
PRODUCT.md,DESIGN.md, actual product data, and user instructions remain the authority. Do not install/approve hooks silently.