Communityライティング&編集github.com

create-project

新しいプロジェクトをこのユーザーの標準レイアウト(.claude-root, .dir-locals.el, code/, spcfctn/code/, .claude/ など)でブートストラップし、既存ファイルをプロジェクト言語に翻訳します。

create-project とは?

このスキルは、ユーザーが新しいプロジェクトの作成、開始、セットアップ、初期化、または「 оформлення」を依頼したときに、標準化されたレイアウトでプロジェクトを自動生成します。具体的には、.claude-root(ワークスペースルートを示す空ファイル)、.dir-locals.el(orgリンク略称を定義)、code/(コード用ディレクトリ)、spcfctn/code/(別のgitリポジトリを持つ仕様ディレクトリ)、.claude/(別のgitリポジトリとCLAUDE.mdを含む)を作成します。また、プロジェクトの散文言語(例:ウクライナ語、英語)と2文字のプロジェクトコードをユーザーに提案し、選択させます。既存ファイルがあれば、指定された言語に翻訳します。このスキルは、開発環境の一貫性を保ち、プロジェクト開始時の手間を大幅に削減します。プラットフォームはClaude Code, Cursor, Codexなどに対応し、グローバルルール(~/.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 — プロジェクトコード

各プロジェクトには独自の2文字の短いコードがあります。3文字は、許容可能な2文字のオプションがない場合にのみ使用します。大文字小文字は固定されません。使用コンテキストに依存します(例: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スコープのMCPのみ、決して userスコープではない)
env.org.env.example のリテラルソース — 以下参照
.claude/ステップ3参照

env.org — プロジェクトの各MCPサーバーに1セクション(* MCP名)、どの変数が必要でなぜ必要なのかを散文で説明;各セクションは :noweb-ref で共通の .env.example にタングルされる(公開、変数名のみをプレースホルダー付きで表示、実際の値なし — org-babel.md、「マルチターゲット」テンプレートはここでは不要、ターゲットは1つ)。実際の .env(パーミッション 600、project-meta.md)はユーザー自身が作成 — 作成も編集もしない;プロジェクトルートに .gitignore は不要。ルートは決してgitリポジトリではないため(project-meta.md)。プロジェクト作成時にMCPサーバーがまだない場合、env.org はセクションの代わりにプレースホルダー文(「まだMCPは接続されていません」)を1つだけ残し、最初のサーバーが現れたときに戻ってくることができる。

.dir-locals.el(orgリンクの略称 root:、ポータブル、ハードコードされたパスなし):

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

(ファイル自体は純粋な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:

    #+begin_example settings.local.json *~ #+end_example

    (*~ — 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 内の段落は1行で書く。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.

関連スキル