field-rename-verification
Skill8 starsChanged 6 months agoMITView on GitHub
Use when renaming fields, changing API contracts, or refactoring data models across multiple services. Prevents incomplete dependency analysis — the #1 source of production incidents from "complete" work. Requires tracing READ → STORE → PASS paths.
- Reads credentials
In this repository129 other files it gives its agents.
- AGENTS.mdAGENTS.md
- guidance/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- guidance/CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- blast-radius-checkSkill
- brainstormingSkill
- branch-flow-gateSkill
- branch-sync-gateSkill
- codebase-reconSkill
- codeowners-drift-auditSkill
- code-review-batterySkill
- cognitive-complexity-refactoringSkill
- debateSkill
- debug-conductorSkill
- dispatching-parallel-agentsSkill
- domain-buildSkill
- evidence-adjudicatorSkill
- executing-plansSkill
- external-cli-auditSkill
- feature-developmentSkill
- finishing-a-development-branchSkill
- git-branch-conventionsSkill
- gitlab-cliSkill
- hotfix-charterSkill
- implementation-trackerSkill
- incident-revert-reviewSkill
- infra-config-investigatorSkill
- investigation-stateSkill
- kernel-splitSkill
- llm-behavior-investigatorSkill
- llm-skill-reviewSkill
- merge-authorization-gateSkill
- micro-harsh-reviewSkill
- output-verificationSkill
- pre-commit-gateSkill
- progressive-code-review-gateSkill
- progressive-harsh-reviewSkill
- providing-code-reviewSkill
- pr-triage-gateSkill
- push-authorization-gateSkill
- receiving-code-reviewSkill
- reproduction-experiment-investigatorSkill
- requesting-code-reviewSkill
- requirements-validation-pmSkill
- requirements-validationSkill
- scope-tripwireSkill
- session-handoffSkill
- skills-hierarchy-tuningSkill
- sp-bughuntSkill
- state-consistency-investigatorSkill
- subagent-driven-developmentSkill
- systematic-debuggingSkill
- test-driven-developmentSkill
- timeline-trace-investigatorSkill
- token-estimationSkill
- unified-commit-gateSkill
- using-git-worktreesSkill
- using-superpowersSkill
- verification-before-completionSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 6 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 49
If you only traced READ and STORE, you missed PASS.
- Distinctive: line 53
Every field has THREE data flow paths that must be traced:
- Distinctive: line 65
BEFORE claiming a field rename is complete:
- Distinctive: line 96
If old types exist in node_modules, consumers may compile against wrong contract.
- Distinctive: line 107
REQUIRED: Run at least one test that crosses the service boundary you changed.
- Distinctive: line 140
If you find yourself thinking:
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Field Rename Verification
Wrong skill? General code modification →
blast-radius-check. Pre-commit checks →pre-commit-gate. Completion verification →verification-before-completion.
When to Use
- Renaming a field, column, or property across one or more services
- Changing an API contract (request/response shape, query parameters, headers)
- Refactoring a data model that crosses service boundaries
- Splitting or merging fields (e.g.,
trackingLine→inboundLine/outboundLine)
Why Renames Are Dangerous
Field renames and API contract changes are the #1 source of production incidents from "complete" work that wasn't actually complete.
Core principle: Trace the FULL data flow, not just the obvious touchpoints.
Incident that created this skill: PROJ-XXX (Feb 2026) - Renamed trackingLine to inboundLine/outboundLine across 6 PRs, but missed the telephony client adapter that actually calls voice-service. Quality gates (lint, typecheck, tests) all passed because each service was internally consistent.
The Iron Law
NO FIELD RENAME IS COMPLETE UNTIL YOU VERIFY EVERY PATH:
READ → STORE → PASS TO OTHER SERVICESIf you only traced READ and STORE, you missed PASS.
The Three Paths
Every field has THREE data flow paths that must be traced:
| Path | Description | Example |
| READ | Where the field is read FROM | Config endpoint, database query |
| STORE | Where the field is written TO | Database insert, cache storage |
| PASS | Where the field is sent TO ANOTHER SERVICE | HTTP client, message queue, event payload |
The PROJ-XXX mistake: Traced READ (settings-service → post-lead.ts) and STORE (lead table), but missed PASS (telephony-client.adapter → voice-service).
Pre-Rename Checklist
BEFORE claiming a field rename is complete:
1. Grep Exhaustively
# Search ALL affected repos for the old field name
grep -rn "oldFieldName" --include="*.ts" --include="*.tsx" --include="*.js" repo1/ repo2/ repo3/
# Also search for the CamelCase, snake_case, and UPPER_CASE variants
grep -rn "old_field_name\|OLD_FIELD_NAME\|OldFieldName" --include="*.ts" repo/2. Trace Every Service Boundary
For each service that handles this field:
| Question | If Yes → Check |
| Does this service call another service? | HTTP clients, SDK calls, API adapters |
| Does this service emit events? | Event payloads, message queue producers |
| Does this service store data? | Database schemas, cache keys |
| Does this service expose an API? | Request/response types, OpenAPI specs |
| Does this service have NPM packages? | Published type definitions |
3. Verify Type Definitions
# Check if old types are still published
grep -rn "oldFieldName" node_modules/@yourorg/*/dist/*.d.tsIf old types exist in node_modules, consumers may compile against wrong contract.
4. Integration Test the Full Path
Unit tests pass but integration fails because:
- Service A sends
oldFieldName - Service B expects
newFieldName - Both services' unit tests pass (internally consistent)
- E2E test fails (contract mismatch)
REQUIRED: Run at least one test that crosses the service boundary you changed.
Common Failure Patterns
| Pattern | What Gets Missed | Prevention |
| "I updated the route handler" | HTTP client that calls the route | Trace callers, not just callees |
| "I updated the type definition" | Runtime code still uses old name | Grep before commit |
| "Tests pass" | Tests mock the boundary, don't test it | Add integration test |
| "Schema is updated" | Transform/adapter layer unchanged | Check every layer |
| "Config reads correctly" | Config is passed to another service wrong | Trace PASS path |
Service Boundary Verification
For cross-service field renames, verify at BOTH ends:
Service A (sender) Service B (receiver)
───────────────── ────────────────────
HTTP client sends → Route handler expects
message.fieldName body.fieldName
↓ ↓
MUST MUST
MATCH MATCHWorked failure (PROJ-XXX):
service-b(receiver) expectedinboundLine/outboundLine✅service-a(sender) still sentlegacyLine❌
Red Flags - STOP
If you find yourself thinking:
- "The database column uses the old name, that's fine" → Maybe, but verify callers
- "I just need to update the schema" → No, trace the full flow
- "The tests pass so it's done" → Tests may not cross the boundary
- "I updated the obvious files" → The non-obvious ones break production
- "It's just a field rename" → Field renames touch everything
The Gate Function
BEFORE claiming a field rename is complete:
1. GREP: Run exhaustive search for old field name in ALL affected repos
2. LIST: Enumerate every service boundary the field crosses
3. TRACE: For each boundary, verify BOTH sender and receiver
4. TEST: Run at least one integration test crossing each boundary
5. ONLY THEN: Claim the rename is complete
Skip any step = incomplete workCompanion Skills
verification-before-completion— General verification disciplinesystematic-debugging— When the field mismatch causes runtime errorslink-verification— For verifying API endpoint URLs still exist
Failure Modes
| Failure | Recovery |
| Missing a consumer across service boundary | Search ALL repos, not just current. Check API clients, shared libs. |
| Renaming in code but not in config/env files | Check .env files, docker-compose, CI configs, deployment manifests |
| Database column rename without migration | Column renames need a migration. Check ORM models match DB schema. |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

