Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
End-to-end full-stack development workflow for Next.js
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Complete full-stack development workflow for Next.js applications with Sanity CMS.
## Feature: [Feature Name]
### Requirements
- [ ] Frontend components needed
- [ ] API routes needed
- [ ] Database schema changes
- [ ] Third-party integrations
### Architecture
- Frontend: Next.js App Router
- Backend: Next.js API Routes
- Database: Sanity CMS
- State: SWR + React Context
### Timeline
- Day 1: Schema & API
- Day 2: Frontend components
- Day 3: Integration & testing
- Day 4: Review & deployment
// Define document type
defineType({
name: 'feature',
title: 'Feature',
type: 'document',
fields: [
defineField({
name: 'title',
title: 'Title',
type: 'string',
validation: Rule => Rule.required()
}),
// ... more fields
]
})
// app/api/feature/route.ts
import { NextRequest, NextResponse } from 'next/server';
import { z } from 'zod';
const FeatureSchema = z.object({
title: z.string().min(1),
description: z.string().optional()
});
export async function GET(request: NextRequest) {
try {
const data = await fetchFeatures();
return NextResponse.json({ success: true, data });
} catch (error) {
return NextResponse.json(
{ success: false, error: 'Failed to fetch' },
{ status: 500 }
);
}
}
export async function POST(request: NextRequest) {
try {
const body = await request.json();
const validated = FeatureSchema.parse(body);
const data = await createFeature(validated);
return NextResponse.json({ success: true, data }, { status: 201 });
} catch (error) {
if (error instanceof z.ZodError) {
return NextResponse.json(
{ success: false, error: 'Validation failed', details: error.errors },
{ status: 400 }
);
}
return NextResponse.json(
{ success: false, error: 'Failed to create' },
{ status: 500 }
);
}
}
// components/FeatureCard.tsx
'use client';
import { motion } from 'framer-motion';
interface FeatureCardProps {
title: string;
description?: string;
onClick?: () => void;
}
export function FeatureCard({ title, description, onClick }: FeatureCardProps) {
return (
<motion.div
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
className="p-6 rounded-lg border border-gray-200 dark:border-gray-800"
onClick={onClick}
role="button"
tabIndex={0}
onKeyDown={(e) => e.key === 'Enter' && onClick?.()}
>
<h3 className="text-lg font-semibold">{title}</h3>
{description && <p className="mt-2 text-gray-600">{description}</p>}
</motion.div>
);
}
// hooks/useFeatures.ts
import useSWR from 'swr';
const fetcher = (url: string) => fetch(url).then(res => res.json());
export function useFeatures() {
const { data, error, isLoading } = useSWR('/api/features', fetcher);
return {
features: data?.data,
isLoading,
isError: error
};
}
// __tests__/FeatureCard.test.tsx
import { render, screen, fireEvent } from '@testing-library/react';
import { FeatureCard } from '@/components/FeatureCard';
describe('FeatureCard', () => {
it('renders title correctly', () => {
render(<FeatureCard title="Test Feature" />);
expect(screen.getByText('Test Feature')).toBeInTheDocument();
});
it('calls onClick when clicked', () => {
const handleClick = jest.fn();
render(<FeatureCard title="Test" onClick={handleClick} />);
fireEvent.click(screen.getByText('Test'));
expect(handleClick).toHaveBeenCalled();
});
});
# Build
npm run build
# Test
npm run test
# Deploy
npm run deploy
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.
日本語の概要は準備中です。原文の説明を表示しています。
Creates a new blog post document in the Sanity studio. Use when the user wants to write a blog post, publish an article, or schedule a future post.
日本語の概要は準備中です。原文の説明を表示しています。
Creates a new certification document in the Sanity studio. Use when the user wants to add a credential, certificate, or professional accreditation to the Certifications collection.
日本語の概要は準備中です。原文の説明を表示しています。
Adds a new skill MD file to the studio's skills collection. Use when the user wants to author a new step-by-step recipe for the studio's in-app Skills tool or the .agents mirror.
日本語の概要は準備中です。原文の説明を表示しています。
Creates a new project document in the Sanity studio. Use when the user wants to add a new portfolio project, a case study, or a work sample to the Projects collection.
日本語の概要は準備中です。原文の説明を表示しています。
Creates a new experience document in the Sanity studio. Use when the user wants to add a job, role, internship, or work history entry to the Experience collection.
日本語の概要は準備中です。原文の説明を表示しています。