Community라이팅 & 에디팅github.com

create-project

새 프로젝트를 사용자의 표준 레이아웃으로 부트스트랩합니다 — .claude-root, .dir-locals.el (루트: org-링크 약어), code/, spcfctn/code/ (자체 git 저장소 포함), .claude/ 디렉토리(자체 git 저장소 포함) 및 프로젝트의 산문 언어와 짧은 두 글자 프로젝트 코드(사용자가 에이전트가 제안한 옵션 중 선택)를 고정하는 CLAUDE.md를 생성하고, 이미 존재하는 파일들을 해당 언어로 번역합니다.

create-project란 무엇인가요?

이 스킬은 사용자의 표준 프로젝트 구조를 자동으로 생성하고 초기 설정을 돕는 AI 에이전트용 작업 지침입니다. 사용자가 새 프로젝트 생성, 시작, 설정, 초기화 또는 'оформити'를 요청할 때 사용됩니다. 주요 기능으로는 프로젝트 루트 마커(.claude-root), Emacs 디렉토리 로컬 변수(.dir-locals.el), 코드(code/) 및 사양(spcfctn/code/) 디렉토리 생성, 각각 별도의 git 저장소 초기화, 그리고 프로젝트 언어와 고유 코드를 명시하는 CLAUDE.md 파일 생성을 포함합니다. 또한 기존 파일을 사용자가 선택한 프로젝트 언어로 번역하고, 정해진 순서(0~6단계)에 따라 작업을 수행하며, 사용자에게 언어와 코드 선택을 명시적으로 요청합니다. 모든 규칙은 전역 설정(~/.claude/rules/)을 따릅니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/EugineKosenko/majordom/tree/HEAD/skills/create-project

Installed? Explore more 라이팅 & 에디팅 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

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

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

문서

create-project은(는) 무엇을 하나요?

사용자의 표준 구조로 새 프로젝트를 생성하는 스킬입니다. 모든 작업은 ~/.claude/rules/의 전역 규칙(특히 project-meta.md, spcfctn-code.md, org-babel.md, file-editing.md)을 따릅니다. 여기에는 작업 순서만 있습니다.

이 스킬을 명시적으로 호출하는 것은 spcfctn/ 생성을 허가하는 것입니다 (전역 규칙 '사용자에게 spcfctn/ 생성을 요청하라'는 여기서 적용되지 않습니다 — 사용자가 이미 요청했습니다).

단계 0 — 준비

  • 프로젝트 루트는 현재 작업 디렉토리(또는 사용자가 지정한 디렉토리)입니다. 이미 무엇이 있는지 확인하십시오: ls -la, find -L (심볼릭 링크 고려).
  • .claude-root, .claude/CLAUDE.md 등이 이미 존재하면 새 프로젝트가 아닙니다: 아무것도 덮어쓰지 말고, 누락된 것만 보충하고 기존 항목을 보고하십시오.
  • spcfctn/이 이미 공유 저장소(모노레포)의 일부라면 분할하지 마십시오. 보고서에 이 사실을 명시하고, 다음 커밋 시 기록을 유지한 채 하위 디렉토리로 분할하는 것을 제안하십시오 (spcfctn-code.md).
  • 각 권한 요청 전에 한국어로 간단한 요약을 제공하십시오 (file-editing.md).

단계 1 — 프로젝트 언어

  • 사용자가 요청에 언어를 지정하지 않았다면 AskUserQuestion을 통해 물어보십시오 ('프로젝트 언어는 무엇입니까?': 한국어, 영어, 기타). 언어를 알기 전에는 어떤 산문 텍스트도 작성하지 마십시오.
  • 프로젝트 언어는 저장소 파일(코드, 주석, 커밋, org/md) 그리고 외부 프로젝트 아티팩트(Jira 태스크, Confluence 페이지)에 적용됩니다. 사용자와의 채팅 언어는 별개로 항상 한국어입니다.

단계 1a — 프로젝트 코드

각 프로젝트에는 두 글자로 구성된 고유한 짧은 코드가 있습니다. 허용 가능한 두 글자 변형이 없을 때만 세 글자를 사용합니다. 대소문자는 고정되지 않습니다: 사용 컨텍스트에 따라 다릅니다 (예: Jira 태스크 키는 대문자 KB-1676; 코드나 이름의 접두사는 일반적으로 소문자). 따라서 제안에서는 대소문자 구분 없이 코드를 표시하고, CLAUDE.md에서는 주 사용 형태로 기록하고 각 형태가 어디에 적용되는지 명시하십시오.

  • 코드를 묵묵히 만들거나 첫 번째로 떠오른 것을 선택하지 마십시오: 명시적으로 제안하십시오. 3-4개의 흥미로운 변형을 (프로젝트 이름, 본질, 또는 말장난에서 유래한 것 — 각각의 이유를 간단히 설명하여) 제시하고 사용자가 하나를 선택하거나 자신의 코드를 제공할 수 있도록 하십시오. AskUserQuestion을 통해 이를 편리하게 수행하십시오 (첫 번째 변형은 귀하의 평가에 따른 최선의 것으로 '(Recommended)' 표시; 'Other'은 사용자 지정 코드를 위해 자동 추가됨).
  • 선택한 코드가 사용자의 기존 프로젝트 코드와 충돌하지 않는지 확인하십시오 (~/.claude/projects/*/memory, 인접 프로젝트의 .claude/CLAUDE.md, 필요한 경우 locate 검색). 충돌이 있으면 알리고 다른 코드를 제안하십시오.
  • 코드를 .claude/CLAUDE.md (단계 3)에 기록하고 최종 보고서에서 언급하십시오.

단계 2 — 구조

루트에 다음을 생성하십시오:

항목내용
.claude-root빈 파일 (공유 작업 디렉토리의 루트를 표시)
.dir-locals.el아래 형식, 끝에 개행 필수
code/빈 디렉토리 (하위 저장소/코드가 위치할 곳)
spcfctn/code/아직 없는 경우 디렉토리 (spcfctn/은 직접 생성, 위 참조), 그 안에 별도의 git init (일상적인 작업, 허가 불필요) 및 *~ 단일 행이 있는 .gitignore; 사용자가 요청하기 전까지 커밋하지 마십시오. spcfctn/ 자체는 저장소가 아닙니다
.mcp.json빈 파일: {"mcpServers": {}} (project-meta.md — project-scope MCP만, 절대 user-scope 아님)
env.org.env.example의 리터러리 소스 — 아래 참조
.claude/단계 3 참조

env.org — 프로젝트의 각 MCP 서버마다 하나의 섹션 (* MCP 이름), 어떤 변수가 필요한지와 그 이유를 산문으로 설명; 각 섹션은 공통 .env.example에 :noweb-ref로 태깅됨 (공개, 변수 이름만 표시하고 실제 값은 플레이스홀더로 대체 — org-babel.md, 여기서는 '멀티타겟' 템플릿 불필요, 단일 대상). 실제 .env (권한 600, project-meta.md)는 사용자가 직접 관리 — 생성하거나 편집하지 마십시오; 루트의 .gitignore는 필요하지 않습니다 (루트는 git 저장소가 아님, project-meta.md). 프로젝트 생성 시 MCP 서버가 없다면 env.org는 섹션 대신 하나의 준비 문장 ('아직 연결된 MCP가 없습니다.')으로 남겨두고, 첫 번째 서버가 나타날 때 다시 방문하십시오.

.dir-locals.el (org 링크를 위한 root: 약어, 이식 가능, 하드코딩된 경로 없음):

((org-mode
  . ((eval . (add-to-list 'org-link-abbrev-alist
                          (cons "root" (locate-dominating-file default-directory ".dir-locals.el")))))))

(파일 자체는 순수 elisp — #+begin_example/#+end_example 행은 포함되지 않습니다.)

spcfctn/ui/가 필요하면 (레이아웃 분석) 나중에 필요 시 생성하십시오; 미리 빈 디렉토리를 만들지 마십시오. 이후에 나타나는 spcfctn/의 각 하위 디렉토리(ui/, deploy/ 등)는 즉시 자체 git init과 *~가 포함된 .gitignore를 받습니다 — spcfctn/ 자체는 저장소가 아닙니다. draft/, raw/, data/ 디렉토리는 넣을 파일이 있을 때까지 생성하지 말고, 미리 .gitignore 패턴을 추가하지 마십시오 (project-meta.md).

단계 3 — .claude/

  1. mkdir .claude 및 .claude/ 내에 별도의 git init (루트 자체가 git 저장소이거나 다른 저장소 내에 있더라도). 이는 일상적인 작업이므로 허가가 필요하지 않습니다. 사용자가 요청하기 전까지 커밋하지 마십시오.

  2. .claude/.gitignore:

    settings.local.json
    *~
    

    (*~ — Emacs 백업 파일의 일반 패턴, *.~undo-tree~ 포함; 끝에 개행.)

  3. .claude/CLAUDE.md — 프로젝트 언어로. 최소 사항:

    • 언어 섹션: 프로젝트의 모든 산문(문서, 코드 주석, 커밋 메시지, org 제목 등)은 프로젝트 언어로; 여기에 Jira/Confluence 아티팩트 포함; 사용자와의 채팅은 한국어 유지;
    • 프로젝트 코드 (단계 1a) — 별도 행, 예: '프로젝트 코드: kb (Jira 태스크 키에서는 KB)';
    • 구조 간략 설명: .claude-root는 루트 표시; code/는 코드; spcfctn/code/는 기존 코드 관행 문서 (자체 git); .claude/는 프로젝트 의도 및 규칙 (자체 git).

    추가 사항(Jira 키, 담당자 등)은 임의로 만들지 마십시오 — 작업 진행 중에 나타날 것입니다.

  4. settings.local.json에 아무것도 쓰지 마십시오 — 개인 파일이며 git에서 제외됩니다.

단계 4 — 루트는 git 미사용

프로젝트 루트는 절대 git 저장소가 아닙니다 (project-meta.md): 루트에서 git init을 수행하지 말고 루트 .gitignore를 생성하지 마십시오. 루트에 이미 .git이 있으면 건드리지 말고 보고서에 사용자에게 알리십시오. 루트에 .mcp.json이 있으면 아무것도 하지 마십시오.

단계 5 — 기존 파일 번역

생성 전에 프로젝트에 있던 모든 파일(*~ 파일, .git, 바이너리, 방금 생성된 서비스 파일 제외)을 다른 언어로 작성된 경우 프로젝트 언어로 변환하십시오:

  • 텍스트는 전체 번역으로 작성하고, 구조, 표, 코드 블록, 식별자 및 인용문을 유지하십시오 (오류 메시지는 원본 유지).
  • 한국어: 일반 용어 사용 (예: '목록'은 "list", '훅'은 "hook"을 의미할 수 있음); 식별자와 CSS 클래스는 번역하지 마십시오 (org-babel.md).
  • .md는 에이전트만 편집합니다; .org는 사용자의 이해할 수 없는 편집을 삭제하지 말고 질문하십시오. :tangle이 있는 org 파일의 경우 org 소스를 편집하고 emacsclient를 통해 탱글하십시오 (org-babel.md).
  • 단락(프로즈, 코드 블록이나 표가 아님) 편집 후 실제 fill-paragraph를 emacsclient --eval로 줄바꿈을 정렬하십시오(org의 경우 먼저 (font-lock-ensure)); new_string/Write의 단락은 한 줄로 작성하십시오. emacsclient가 연결되지 않으면 사용자에게 서버 시작을 요청하고, 흉내내지 마십시오.
  • org/md 프로즈에 대해 이후 org-lint 스킬을 실행하십시오.
  • 내용의 일부가 여기에 없는 파일/프로젝트를 참조하는 경우 링크를 '수정'하지 말고 주변 텍스트만 번역하십시오.

단계 6 — 보고서

선택된 프로젝트 코드, 생성된 항목, 이미 존재했던 항목, 번역된 항목을 간략히 나열하고, .claude/ 및 spcfctn/ 하위 디렉토리의 커밋이 수행되지 않았음을 상기시키십시오 (요청 시 수행).

하지 말아야 할 것

  • .env/.env.* (project-meta.md)를 편집하거나 비밀이 포함된 .mcp.json을 생성하지 마십시오.
  • code/*의 컴포넌트 하위 저장소에 있는 CLAUDE.md/.claude/ 파일에 아무것도 쓰지 마십시오 — 루트 .claude/에만 작성하십시오.
  • 사용자를 대신하여 언어 규칙을 임의로 만들지 마십시오 — 요청된 언어만 사용하십시오.
  • 변형 제안과 사용자 선택 없이 프로젝트 코드를 직접 할당하지 마십시오.
  • 프로젝트 루트와 spcfctn/ 루트에서 git init을 수행하지 마십시오: 저장소는 .claude/, code/* 및 spcfctn/* 하위 디렉토리에만 있습니다.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

EugineKosenko/majordom

Analyse a Figma .fig file kept in a project's spcfctn/ui/draft. Unpacks and decodes it offline (kiwi), breaks it into sections, screens, text rows and rasters, writes the analysis to spcfctn/ui/*.md, then fetches the author's comments through the figma MCP by link, binds them to screens by geometry, checks that the comments agree with the content of the file and asks the user to clarify what does not. Use when the user asks to analyse, decode or re-read a .fig file or Figma wireframes, or to refresh spcfctn/ui after a new export.

EugineKosenko/majordom

Керування сесіями claude-code-ide.el у живому Emacs через emacsclient headless — старт/continue/resume без блокуючих запитів, безпечна зупинка, перемикання permission-mode і auto-accept, навігація в інтерактивних picker'ах. Використовуй, коли сесія "Мажордом" має підняти, продовжити, зупинити чи інспектувати сесію claude-code-ide для іншого проєкту.

EugineKosenko/majordom

Scaffold a new component/command/crate in this user's literate org-babel Rust style (modeled on ads-back's crates/api and crates/cli patterns — one org file per command with a :tangle skeleton block, Декларації-before-Визначення/Дії noweb blocks, one heading per concern). Use whenever the user asks to add a new component, command, procedure, CLI subcommand, Yew component, module, or crate in an org-babel-literate Rust project (ads-back, ads-front, or similar), including wiring a brand-new crate's config.org/env.org/main.org into the workspace's federated config.org.

EugineKosenko/majordom

Check org/md prose in this user's projects against the prose-formatting conventions in ~/.claude/rules/org-babel.md (~...~ vs =...= markup, acronym casing, /.../ glossary terms, real org-links vs italics/plain text, spaces around / between two markups, trailing newline, fill-column). Use proactively right after editing prose paragraphs in an .org or .md file (in place of manually re-deriving each rule from memory), and whenever the user explicitly asks to check/lint org rules or compares the request to running clippy.

관련 스킬