소스 정보
- 저장소
- MarieLynneBlock/arcanum-artifex
- 최근 소스 활동
- 2026년 7월 10일 08:19
- 감지된 SKILL.md 언어
- 영어
- 스타
- 4
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/MarieLynneBlock/arcanum-artifex --skill api-design명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
Check that a Copilot customisation asset (skill, workflow, agent, instruction, or prompt folder) stays standalone and copyable, with no runtime dependency on paths outside its own folder. Use when packaging an asset for reuse, reviewing whether an asset can be copied out of this repo, or investigating why a copied asset breaks elsewhere.
Audit Markdown links, images, and local anchors for broken relative references. Use when reviewing documentation changes, moving or renaming assets, updating indexes, or investigating broken links.
Validate YAML frontmatter of Copilot customisation assets in this lab (SKILL.md, WORKFLOW.md, *.agent.md, *.instructions.md, *.prompt.md). Use when adding, reviewing, or fixing an asset's frontmatter, or when asked to check whether an asset follows repository conventions.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | api-design |
| description | Applies REST and GraphQL design principles to produce or review an API contract. |
| version | 1.0.0 |
| tags | ["api","rest","graphql","design","contract"] |
| metadata | {"skill-author":"Marie-Lynne Block"} |
Applies REST and GraphQL design principles to produce or review an API contract. It covers resource modelling, URL conventions, HTTP semantics, request/response schemas, error formats, versioning strategy, and authentication patterns — producing OpenAPI-compatible snippets or GraphQL schema fragments.
| Principle | Guidance |
|---|---|
| Resource naming | Nouns, plural, lowercase, hyphenated: /orders, /line-items. Never verbs in URLs. |
| HTTP methods | GET read, POST create, PUT full replace, PATCH partial update, DELETE remove |
| Idempotency | GET, PUT, DELETE must be idempotent. POST is not. PATCH should be designed to be. |
| Status codes | 200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorised, 403 Forbidden, 404 Not Found, 409 Conflict, 422 Unprocessable Entity, 500 Internal Server Error |
| Filtering/sorting | Query parameters: ?status=active&sort=created_at&order=desc&page=2&per_page=25 |
| Versioning | URI prefix (/v1/) for breaking changes; header versioning (Accept: application/vnd.api+json;version=2) for content negotiation |
Consistent error bodies across all endpoints:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Human-readable description",
"details": [
{ "field": "email", "issue": "must be a valid email address" }
]
}
}
query for reads, mutation for writes, subscription for real-time.OrderLine). Field names: camelCase (lineItems).edges, node, pageInfo).input CreateOrderInput { ... }.type CreateOrderResult = Order | ValidationError.Identify the API type. REST or GraphQL? If not stated, recommend based on use case (REST for CRUD-heavy APIs, GraphQL for flexible querying across related data).
Model the resources or types. Identify the entities involved and their relationships. Name them clearly.
Define the operations. For REST: map resources to endpoints and HTTP methods. For GraphQL: define queries, mutations, and types.
Design request/response schemas. Specify field names, types, and validation rules. Call out optional vs. required fields.
Define the error contract. Consistent error format across all operations.
Address versioning and authentication. State the versioning strategy and authentication mechanism.
Flag design concerns. Identify any REST anti-patterns, N+1 risks (GraphQL), or security gaps.
Produce the output using the format below.
openapi: 3.1.0
info:
title: [API name]
version: 1.0.0
paths:
/[resource]:
get:
summary: List [resources]
parameters:
- name: status
in: query
schema:
type: string
responses:
'200':
description: Success
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/[Resource]'
'401':
$ref: '#/components/responses/Unauthorised'
/[resource]/{id}:
get:
summary: Get [resource] by ID
parameters:
- name: id
in: path
required:
[]
[, ]
type Query {
[resource](id: ID!): [Resource]
[resources](filter: [Resource]FilterInput, first: Int, after: String): [Resource]Connection!
}
type Mutation {
create[Resource](input: Create[Resource]Input!): Create[Resource]Result!
}
type [Resource] {
id: ID!
# fields
createdAt DateTime
CreateResource
CreateResourceResult Resource ValidationError
ValidationError
String
FieldError
### Design decisions
- [Decision and rationale]
### Concerns / open questions
- [Anti-pattern, risk, or unresolved design question]
Input: "Design a REST API for creating and managing orders. An order has line items, a customer, and a status."
Expected output: OpenAPI snippet with /orders (GET, POST) and /orders/{id} (GET, PATCH, DELETE) and /orders/{id}/line-items (GET, POST). Order schema with status enum. Error contract. Design note on whether to embed line items in the order response or use a separate endpoint.
Input: User shares a GraphQL schema where a User type has a posts field returning a plain list with no pagination.
Expected output: Concern flagged for missing pagination (N+1 and performance risk at scale). Suggested fix using Relay connection pattern. Note on missing input types for mutations.
/createOrder, /getUser), it is an anti-pattern — model it as a resource operation instead.info, servers, and security sections.?api_key=...) — they appear in server logs and browser history.