본문으로 건너뛰기
cccskills
무료GitHub에 공개

sanity-groq-query

Write, debug, and optimize GROQ queries for Sanity CMS in this portfolio

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(1)

  • SKILL.md3.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Sanity GROQ Query Skill

Write, debug, and optimize GROQ queries for Sanity CMS with the v2026-02-19 parser.

When to use this skill

  • Writing new GROQ queries for Sanity data fetching
  • Debugging GROQ parse errors
  • Optimizing query performance
  • Adding new document types or fields

Sanity project details

  • Project ID: 4bg9jxr4
  • Dataset: production
  • API Version: 2026-02-19
  • API Host: apicdn.sanity.io

Critical: GROQ v2026-02-19 parser quirks

The 2026-02-19 parser is stricter than older versions:

Field ordering matters

// WRONG — parser sees galleryItems as part of the outer object
*[_type == "project" && slug.current == $slug][0]{
  title,
  slug,
  galleryItems{
    images[]{ url, alt }
  },
  technologies // parser error here
}

// CORRECT — nested projections must come AFTER all top-level fields
*[_type == "project" && slug.current == $slug][0]{
  title,
  slug,
  technologies,
  tier,
  showcaseDetail,
  galleryItems{
    images[]{ url, alt }
  }
}

Use quoted field names for aliases

// WRONG — unquoted aliases cause parse errors
*[_type == "project"]{
  title,
  projectTitle: title // error
}

// CORRECT — use quoted names for aliases
*[_type == "project"]{
  title,
  "projectTitle": title
}

Array projections need careful nesting

// WRONG
*[_type == "project"]{
  title,
  galleryItems[]{
    images[]{ url, alt, caption }
  }
}

// CORRECT
*[_type == "project"]{
  title,
  galleryItems[] {
    images[] { url, alt, caption }
  }
}

Query patterns

Fetch all projects (summary)

*[_type == "project"] | order(orderRank asc) {
  title,
  slug,
  description,
  tier,
  technologies,
  orderRank
}

Fetch single project by slug

*[_type == "project" && slug.current == $slug][0] {
  title,
  slug,
  description,
  tier,
  projectUrl,
  repoUrl,
  orderRank,
  featured,
  technologies,
  features,
  challenges,
  learnings,
  metrics,
  showcaseDetail {
    challenge,
    solution,
    result,
    architecture,
    highlights
  },
  galleryItems[] {
    images[] { url, alt, caption, type }
  },
  _updatedAt
}

Fetch hero section

*[_type == "heroSection"][0] {
  name,
  title,
  roleRotator,
  contactEmail
}

Fetch blog posts

*[_type == "blogPost"] | order(publishedAt desc) {
  title,
  slug,
  publishedAt,
  excerpt,
  tags,
  readingTime,
  featured
}

Fetch certifications

*[_type == "certification"] | order(issuedDate desc) {
  name,
  issuer,
  issuedDate,
  expirationDate,
  credentialId,
  credentialUrl,
  logo {
    asset->{url}
  }
}

Fetch experience

*[_type == "experience"] | order(startDate desc) {
  company,
  position,
  location,
  startDate,
  endDate,
  current,
  description,
  highlights,
  technologies
}

Fetch skills

*[_type == "skill"] | order(category asc, name asc) {
  name,
  category,
  level,
  yearsOfExperience
}

Common errors

"Parse error: expected }"

  • Usually a missing comma between fields
  • Check nested projections for missing closing braces

"Parse error: unexpected token"

  • Unquoted alias names
  • Missing commas between fields
  • Gallery/nested projection before top-level fields

"Cannot query"

  • Wrong dataset name
  • Missing * at the start of query
  • Wrong _type name

Debugging workflow

  1. Test query in Sanity Vision (Sanity Studio)
  2. Use console.log to see raw query string
  3. Check for comma placement
  4. Verify field names match schema
  5. Ensure nested projections come last

Checklist

  • Query works in Sanity Vision
  • No parse errors with v2026-02-19
  • Nested projections come after top-level fields
  • Aliases use quoted names
  • Slug input is sanitized (no GROQ injection)

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Audit and fix accessibility issues across the portfolio to ensure WCAG 2.1 AA compliance.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

PP-Namias/Portfolio22026년 10월 23일 업데이트

PP-Namias의 스킬 모두 보기

이 스킬의 문제 신고