Community코딩 & 개발github.com

cristoferdomingues/BlackAgents

BlackAgents 기능 구축을 위한 참조 문서입니다. 계층형 아키텍처, App Router 페이지/라우트 규칙, API 봉투 + zod 레시피, lib/artifacts 도메인, 작업 공간으로 제한된 파일 시스템 경로를 다룹니다. 앱 동작, API 라우트, 또는 도메인 로직을 추가하거나 변경할 때 참고하세요.

BlackAgents란 무엇인가요?

이 스킬은 BlackAgents 애플리케이션의 계층형 아키텍처 패턴, App Router 규칙, API 라우트 레시피, 도메인 모델, 그리고 교차 참조 규칙을 정의합니다. UI, API, 도메인, 파일 시스템 계층을 명확히 분리하여 유지보수성을 높입니다. Cursor와 Claude 플랫폼을 모두 지원하며, 작업 공간 내 파일 시스템 접근을 `resolveInWorkspace` 함수를 통해 안전하게 제한합니다. 개발자는 이 문서를 참고하여 새로운 기능이나 API 라우트를 올바른 계층에 구현하고, 일관된 API 응답 형식과 Zod 스키마 검증을 적용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/cristoferdomingues/BlackAgents/tree/HEAD/.agents/skills/nextjs-app-patterns

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

BlackAgents 앱 패턴

적용 시기

app/**, app/api/**, 또는 lib/**를 건드리는 기능이나 수정을 구현할 때 이 문서를 읽으세요. 엄격한 제약 조건은 typescript-strict 및 api-response-format 규칙에 있으며, 이 파일은 계층과 레시피를 설명합니다.

아키텍처 (계층 존중)

UI (components/features/, client) ──fetch──▶ API routes (app/api/**/route.ts)
                                                    │  { success, data | error }
                                              Domain (lib/artifacts/, lib/standards/)
                                                    │  parse / serialize / graph
                                              Filesystem (lib/fs-service.ts)
                                                    │  resolveInWorkspace (no escape)
                                              Workspace folder (.cursor / .claude ...)

규칙:

  • 순수하고 플랫폼에 독립적인 로직은 lib/artifacts/**에 있습니다. React나 next/server를 가져오지 않습니다.
  • HTTP 관련 사항은 app/api/**/route.ts에만 있습니다.
  • 모든 디스크 접근은 lib/fs-service.ts를 통해 이루어집니다. 라우트에서 직접 node:fs를 호출하지 마십시오.

App Router 규칙

  • 페이지는 기본적으로 서버 컴포넌트입니다. 상호작용/상태/이펙트가 필요한 경우에만 "use client"를 추가하세요.
  • 라우트 그룹: /agents, /commands, /rules, /skills 각각에는 목록 페이지, [name] 편집 페이지, new 페이지가 있습니다. /new는 안내 마법사입니다. 기타 라우트: /graph, /standards, /export, /sync, /chat, /providers, /settings.
  • 클라이언트 기능 컴포넌트는 apiFetch(lib/api.ts)를 통해 데이터를 가져오고 WorkspaceProvider에서 활성 작업 공간 상태를 읽습니다. 클라이언트에서 원시 fetch나 직접적인 설정 읽기를 사용하지 마십시오.

API 라우트 레시피

import { ok, fail, handle } from "@/lib/api-response"
import { artifactInputSchema } from "@/lib/artifacts/schemas"

export async function POST(req: Request) {
  return handle(async () => {
    const parsed = artifactInputSchema.safeParse(await req.json())
    if (!parsed.success) return fail(parsed.error.issues[0].message, 400)
    // ...lib/artifacts + lib/fs-service를 통한 도메인 작업...
    return ok({ /* data */ })
  })
}
  • 항상 ok / fail을 통해 반환하세요. handle로 감싸서 예외 발생 시 500 봉투가 되도록 하세요.
  • 설정(lib/config.ts)에서 작업 공간 루트를 읽은 다음 resolveInWorkspace(root, relPath)를 사용하세요.
  • 비밀은 서버 측에서만 lib/secrets.ts로 읽으세요. 자격 증명 누락 시 fail("...", 412).

도메인 모델

lib/artifacts/:

  • types.ts — Artifact, ArtifactType, Platform, ArtifactFrontmatter (도구에 독립적).
  • layout.ts — PLATFORM_LAYOUTS + artifactRelPath() / artifactDeletePath(); 플랫폼의 폴더/확장자를 아는 유일한 곳입니다. ACTIVE_PLATFORMS = ["cursor", "claude"], 기본값 cursor.
  • parser.ts — scanWorkspace(root) 및 parseArtifact (gray-matter 사용); 스킬은 <name>/SKILL.md 디렉토리로 재귀적으로 탐색됩니다.
  • serializer.ts — serializeArtifact(input)는 프론트매터 + 본문을 작성합니다. 규칙은 name을 생략합니다 (파일 이름으로 식별).
  • schemas.ts — nameSchema (kebab-case), artifactInputSchema, normalizeExtra (유형별 프론트매터).
  • graph.ts — 작성 규칙에서 교차 참조를 추출합니다.

교차 참조 규칙 (그래프가 읽는 대상)

출발 → 도착본문 규칙
명령 → 에이전트agent-name (굵게)
에이전트 → 규칙`rule-name` 규칙
에이전트 → 스킬`skill-name` 스킬
규칙 → 규칙관련 규칙: a, b.
규칙 → 스킬참고: x 스킬.

이 정확한 규칙으로 본문을 작성해야 관계 그래프와 어시스턴트의 링크 감지가 작동합니다.

파일 시스템 안전

export function resolveInWorkspace(root: string, relativePath: string): string {
  // root 아래에서 relativePath를 확인하고 이스케이프 시 WorkspaceError 발생
}

모든 읽기/쓰기는 이 함수를 통해 작업 공간 상대 경로로부터 구성되어야 합니다. 절대 경로를 연결하거나 클라이언트가 제공한 절대 경로를 허용하지 마십시오.

작업 공간 외부 지속성

  • ~/.black-agents/config.json — 저장된 작업 공간 + 활성 currentPath (lib/config.ts).
  • ~/.black-agents/secrets.json — LLM 키, 모드 0600, 서버 전용 (lib/secrets.ts).
  • <workspace>/.black-agents/standards.md — 작업 공간별 작성 표준 재정의.
  • BLACK_AGENTS_CONFIG_DIR로 설정 디렉토리를 재정의할 수 있습니다 (테스트에 유용).

사용 방법

참조 전용입니다. 페르소나와 워크플로는 feature-developer 에이전트에 있습니다. 안전장치는 typescript-strict 및 api-response-format 규칙에 있습니다. 이 파일을 사용하여 로직을 올바른 계층에 배치하고 라우트 레시피를 복사한 다음, UI는 uiux-designer 에이전트에, 테스트 범위는 tester 에이전트에 넘기세요.

관련 스킬