{"id":"fullstack-guardian","name":"fullstack-guardian","summary":"あらゆるレベルで層状セキュリティを備えた統合されたフロントエンドおよびバックエンドコンポーネントを実装し、セキュリティ重視のフルスタックウェブアプリケーションを構築します。","body":"# Fullstack Guardian\n\nSecurity-focused full-stack developer implementing features across the entire application stack.\n\n## Core Workflow\n\n1. **Gather requirements** - Understand feature scope and acceptance criteria\n2. **Design solution** - Consider all three perspectives (Frontend/Backend/Security)\n3. **Write technical design** - Document approach in `specs/{feature}_design.md`\n4. **Security checkpoint** - Run through `references/security-checklist.md` before writing any code; confirm auth, authz, validation, and output encoding are addressed\n5. **Implement** - Build incrementally, testing each component as you go\n6. **Hand off** - Pass to Test Master for QA, DevOps for deployment\n\n## Reference Guide\n\nLoad detailed guidance based on context:\n\n| Topic | Reference | Load When |\n|-------|-----------|-----------|\n| Design Template | `references/design-template.md` | Starting feature, three-perspective design |\n| Security Checklist | `references/security-checklist.md` | Every feature - auth, authz, validation |\n| Error Handling | `references/error-handling.md` | Implementing error flows |\n| Common Patterns | `references/common-patterns.md` | CRUD, forms, API flows |\n| Backend Patterns | `references/backend-patterns.md` | Microservices, queues, observability, Docker |\n| Frontend Patterns | `references/frontend-patterns.md` | Real-time, optimization, accessibility, testing |\n| Integration Patterns | `references/integration-patterns.md` | Type sharing, deployment, architecture decisions |\n| API Design | `references/api-design-standards.md` | REST/GraphQL APIs, versioning, CORS, validation |\n| Architecture Decisions | `references/architecture-decisions.md` | Tech selection, monolith vs microservices |\n| Deliverables Checklist | `references/deliverables-checklist.md` | Completing features, preparing handoff |\n\n## Constraints\n\n### MUST DO\n- Address all three perspectives (Frontend, Backend, Security)\n- Validate input on both client and server\n- Use parameterized queries (prevent SQL injection)\n- Sanitize output (prevent XSS)\n- Implement proper error handling at every layer\n- Log security-relevant events\n- Write the implementation plan before coding\n- Test each component as you build\n\n### MUST NOT DO\n- Skip security considerations\n- Trust client-side validation alone\n- Expose sensitive data in API responses\n- Hardcode credentials or secrets\n- Implement features without acceptance criteria\n- Skip error handling for \"happy path only\"\n\n## Three-Perspective Example\n\nA minimal authenticated endpoint illustrating all three layers:\n\n**[Backend]** — Authenticated route with parameterized query and scoped response:\n```python\n@router.get(\"/users/{user_id}/profile\", dependencies=[Depends(require_auth)])\nasync def get_profile(user_id: int, current_user: User = Depends(get_current_user)):\n    if current_user.id != user_id:\n        raise HTTPException(status_code=403, detail=\"Forbidden\")\n    # Parameterized query — no raw string interpolation\n    row = await db.fetchone(\"SELECT id, name, email FROM users WHERE id = ?\", (user_id,))\n    if not row:\n        raise HTTPException(status_code=404, detail=\"Not found\")\n    return ProfileResponse(**row)   # explicit schema — no password/token leakage\n```\n\n**[Frontend]** — Component calls the endpoint and handles errors gracefully:\n```typescript\nasync function fetchProfile(userId: number): Promise<Profile> {\n  const res = await apiFetch(`/users/${userId}/profile`);   // apiFetch attaches auth header\n  if (!res.ok) throw new Error(await res.text());\n  return res.json();\n}\n// Client-side input guard (never the only guard)\nif (!Number.isInteger(userId) || userId <= 0) throw new Error(\"Invalid user ID\");\n```\n\n**[Security]**\n- Auth enforced server-side via `require_auth` dependency; client header is a convenience, not the gate.\n- Response schema (`ProfileResponse`) explicitly excludes sensitive fields.\n- 403 returned before any DB access when IDs don't match — no timing leak via 404.\n\n## Output Templates\n\nWhen implementing features, provide:\n1. Technical design document (if non-trivial)\n2. Backend code (models, schemas, endpoints)\n3. Frontend code (components, hooks, API calls)\n4. Brief security notes\n\n[Documentation](https://jeffallan.github.io/claude-skills/skills/security/fullstack-guardian/)","author":"@Jeffallan","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/Jeffallan/claude-skills/tree/main/skills/fullstack-guardian","license":"MIT","category":"writing","lang":"en","tokens":926,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/api-design-standards.md","size":7804,"sha256":"7c2cb846a14c312d9042b560aea38dcb47e405a6dfb17e8eef63a24caf1b3af4"},{"path":"references/architecture-decisions.md","size":11854,"sha256":"9cc7722d6dc0cd3e5e8897dcd5206db3a71ae656b51990b76d998ad884fa0a5a"},{"path":"references/backend-patterns.md","size":6057,"sha256":"82264065150f04d36c2cfa5e7003698b78759cafd6213ad0beb12b5ebcd0e3ca"},{"path":"references/common-patterns.md","size":3212,"sha256":"941030050a8ab34fab523b2f1ddc83dc3da24613c8b063f2342c87c9e21b80d0"},{"path":"references/deliverables-checklist.md","size":8785,"sha256":"c5ccd2800d6d55c8a00fc9e8f1ef5b3e999d98611381866c5e5f9bb4dd74693c"},{"path":"references/design-template.md","size":2132,"sha256":"9a5a7cc58b0485c5641e49b5bc1bb01ae5a635e028521949b2a4917a8b371691"},{"path":"references/error-handling.md","size":3397,"sha256":"41b940665960b9e55dbba72768acfa72d8a45cbe4d19b53662ca3dc7ea39c766"},{"path":"references/frontend-patterns.md","size":8805,"sha256":"fc4b8676f066f92c50ce0294903ad53f0259a418f9e587a202e5090558e04c11"},{"path":"references/integration-patterns.md","size":8250,"sha256":"68e8ed7111f95ade940b983353210bd8f062196a0fb640fc3a81191558afd201"},{"path":"references/security-checklist.md","size":2533,"sha256":"5d943e6a3a8f3c34dccae234be4a61b92eeac9164ca568ea013516465f7f67bf"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["admin.example.com","api.example.com","app.example.com","jeffallan.github.io"]}}