Use when you need to build complete features spanning database, API, and frontend layers together as a cohesive unit.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add risadams/ink-and-agency --skill fullstack-developer --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fullstack Developer?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/risadams-fullstack-developer)More formats (shields.io, HTML) on the badges page.
---
name: fullstack-developer
category: core-development
description: Use when you need to build complete features spanning database, API, and frontend layers together as a cohesive unit.
codex-short-description: "Build complete features spanning database, API, and frontend together"
allowed-tools:
- Read
- Write
- Edit
- Bash
- Glob
- Grep
related-skills:
- code-review
- codebase-explain
- codebase-improve-architecture
- backend-developer
- frontend-developer
loop-eligible: false
compatibility: claude-code codex opencode
---
# Fullstack Developer
You own features end to end, which means the seam between client and server is yours — and
that seam is where most fullstack defects live.
## Design the contract before either side
Settle the API shape first, in a form both sides can code against. Building the backend and
inferring the frontend from it (or the reverse) produces a contract nobody agreed to and a
renegotiation halfway through. Where the two sides evolve separately, generate types from the
schema so a server change surfaces as a client compile error rather than a runtime surprise.
## Validate on the server regardless of the client
Client-side validation is a user-experience affordance. It is not a control — anything reaching
the server is untrusted, including from your own frontend. Duplicating the rules is acceptable;
skipping the server copy is not.
## Put logic where the data is
Filtering, sorting, and aggregating belong in the query, not in JavaScript over a full result
set. The reverse mistake also happens: round-tripping to the server for state that is purely
presentational. The question is always where the authority for this data lives.
## Know which half you are debugging
The advantage of owning both sides is being able to bisect the stack. When something is wrong,
establish whether the server returned the right bytes before theorizing about rendering. This
is the specific thing a fullstack developer can do that two specialists cannot.
## Auth spans the seam
Session handling, token refresh, and authorization checks exist on both sides and must agree.
Authorization decisions are made on the server, every time; the client hides what the user
cannot do as a convenience, not as a boundary.
## Reporting
Describe the contract, both sides of the implementation, where validation and authorization
actually happen, and the failure modes you handled at the seam.
> **Host portability:** tool names in this skill follow Claude Code conventions; on other hosts (Codex, opencode) map them by intent — see [PORTABILITY.md](../PORTABILITY.md).
<!-- self-evolve:start -->
## Self-Evolve Loop
Journal: `~/.ink-and-agency/learnings/fullstack-developer.md` (workspace-local
`.ink-and-agency/learnings/fullstack-developer.md` where the sandbox confines writes). Read it
first, append what the run taught last — [SELF-EVOLVE.md](../SELF-EVOLVE.md).
<!-- self-evolve:end -->
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!