Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Document frontend data needs for backend developers. Use when frontend needs to communicate API requirements to backend, or user says 'backend requirements', 'what data do I need', 'API requirements', or is describing data needs for a UI.
.claude/skills/davila7-frontend-to-backend-requirements/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-20 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -13% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -6% | 0% |
You are a frontend developer documenting what data you need from backend. You describe the what, not the how. Backend owns implementation details.
> No Chat Output: ALL responses go to .claude/docs/ai/<feature-name>/backend-requirements.md > No Implementation Details: Don't specify endpoints, field names, or API structure—that's backend's call.
This mode is for frontend devs to communicate data needs:
You're requesting, not demanding. Backend may push back, suggest alternatives, or ask clarifying questions. That's healthy collaboration.
| Frontend Owns | Backend Owns | |---------------|--------------| | What data is needed | How data is structured | | What actions exist | Endpoint design | | UI states to handle | Field names, types | | User-facing validation | API conventions | | Display requirements | Performance/caching |
Before listing requirements:
For each screen/component, describe:
Data I need to display:
Actions user can perform:
States I need to handle:
List what you're unsure about:
These invite backend to clarify or push back.
End with open questions:
Create .claude/docs/ai/<feature-name>/backend-requirements.md:
markdown# Backend Requirements: <Feature Name> ## Context [What we're building, who it's for, what problem it solves] ## Screens/Components ### <Screen/Component Name> **Purpose**: What this screen does **Data I need to display**: - [Description of data piece, not field name] - [Another piece] - [Relationships between pieces] **Actions**: - [Action description] → [Expected outcome] - [Another action] → [Expected outcome] **States to handle**: - **Empty**: [When/why this happens] - **Loading**: [What's being fetched] - **Error**: [What can go wrong, what user sees] - **Special**: [Any edge cases] **Business rules affecting UI**: - [Rule that changes what's visible/enabled] - [Permissions that affect actions] ### <Next Screen/Component> ... ## Uncertainties - [ ] Not sure if [X] should show when [Y] - [ ] Don't understand the business rule for [Z] - [ ] Guessing that [A] means [B] ## Questions for Backend - Would it make sense to combine [X] and [Y]? - Should I expect [Z] to always be present? - Is there existing data I can reuse for [W]? ## Discussion Log [Backend responses, decisions made, changes to requirements]
> "I need a GET /api/contracts endpoint that returns an array with fields: id, title, status, created_at"
> "I need to show a list of contracts. Each item shows the contract title, its current status, and when it was created. User should be able to filter by status."
> "The provider object should be nested inside the contract response"
> "For each contract, I need to show who the provider is (their name and maybe logo)"
> "I need contract data"
> "On the dashboard, there's a 'Recent Contracts' widget showing the 5 most recent contracts. User clicks one to go to detail page."
Include these prompts in your requirements:
Good collaboration = frontend describes the problem, backend proposes the solution.
Update the requirements doc:
The doc becomes the source of truth for what was agreed.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-20 | fail→pass | 18,602 | 13,741 | -26% | 1 | 1 | 0% | 3,397 | 3,459 | +2% | 0 | 0 | — |
case-21 | fail→fail | 14,895 | 3,268 | -78% | 1 | 1 | 0% | 2,592 | 1,870 | -28% | 0 | 0 | — |
case-22 | fail→pass | 19,352 | 15,987 | -17% | 1 | 1 | 0% | 3,506 | 3,834 | +9% | 0 | 0 | — |
case-03 | pass→pass | 18,544 | 20,413 | +10% | 1 | 1 | 0% | 2,882 | 4,586 | +59% | 0 | 0 | — |
case-01 | fail→pass | 21,730 | 15,038 | -31% | 1 | 1 | 0% | 4,169 | 3,633 | -13% | 0 | 0 | — |
case-02 | fail→pass | 17,181 | 13,753 | -20% | 1 | 1 | 0% | 3,136 | 3,517 | +12% | 0 | 0 | — |
case-04 | pass→fail | 14,143 | 30,553 | +116% | 1 | 1 | 0% | 3,026 | 3,357 | +11% | 0 | 0 | — |
case-05 | pass→fail | 15,008 | 14,672 | -2% | 1 | 1 | 0% | 3,291 | 3,797 | +15% | 0 | 0 | — |
case-06 | pass→fail | 16,104 | 14,794 | -8% | 1 | 1 | 0% | 3,111 | 3,930 | +26% | 0 | 0 | — |
case-07 | fail→fail | 17,289 | 10,319 | -40% | 1 | 1 | 0% | 3,670 | 3,141 | -14% | 0 | 0 | — |
case-13 | fail→pass | 19,181 | 14,401 | -25% | 1 | 1 | 0% | 3,846 | 3,632 | -6% | 0 | 0 | — |
case-08 | fail→fail | 17,037 | 24,425 | +43% | 1 | 1 | 0% | 3,640 | 2,812 | -23% | 0 | 0 | — |
case-09 | fail→pass | 20,123 | 16,808 | -16% | 1 | 1 | 0% | 4,095 | 4,051 | -1% | 0 | 0 | — |
case-10 | fail→fail | 17,877 | 23,204 | +30% | 1 | 1 | 0% | 3,472 | 2,802 | -19% | 0 | 0 | — |
case-11 | fail→pass | 18,710 | 15,167 | -19% | 1 | 1 | 0% | 3,716 | 3,796 | +2% | 0 | 0 | — |
case-12 | fail→pass | 18,027 | 17,749 | -2% | 1 | 1 | 0% | 3,541 | 4,124 | +16% | 0 | 0 | — |
case-14 | fail→pass | 21,005 | 13,735 | -35% | 1 | 1 | 0% | 4,374 | 3,501 | -20% | 0 | 0 | — |
case-15 | fail→fail | 22,028 | 6,615 | -70% | 1 | 1 | 0% | 4,156 | 2,348 | -44% | 0 | 0 | — |
case-16 | fail→fail | 22,344 | 19,194 | -14% | 1 | 1 | 0% | 4,285 | 4,486 | +5% | 0 | 0 | — |
case-17 | fail→pass | 20,856 | 16,782 | -20% | 1 | 1 | 0% | 3,465 | 3,982 | +15% | 0 | 0 | — |
case-18 | fail→pass | 23,808 | 15,619 | -34% | 1 | 1 | 0% | 3,874 | 3,702 | -4% | 0 | 0 | — |
case-19 | fail→pass | 17,552 | 11,610 | -34% | 1 | 1 | 0% | 2,886 | 3,013 | +4% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 21 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.