CommunityEscrita e Ediçãogithub.com

EugineKosenko/majordom

Inicializa um novo projeto no layout padrão do usuário — .claude-root, .dir-locals.el, code/, spcfctn/code/ (com repositório git próprio) e .claude/ com seu próprio repositório git e CLAUDE.md — e traduz arquivos existentes para o idioma escolhido.

O que é majordom?

A habilidade 'create-project' automatiza a criação de novos projetos seguindo uma estrutura de diretórios padronizada e bem definida. Ela configura a raiz do projeto com arquivos essenciais como .claude-root, .dir-locals.el (com uma abreviação 'root' para links do Org-mode), code/, spcfctn/code/ (com seu próprio repositório Git), .mcp.json, env.org (documentação de variáveis de ambiente para servidores MCP) e um diretório .claude/ contendo seu próprio repositório Git e um arquivo CLAUDE.md. Um dos principais diferenciais é a definição colaborativa do idioma do projeto (ucraniano, inglês ou outro) e um código curto de duas letras, escolhido pelo usuário a partir de opções sugeridas pelo agente. Todo texto em prosa existente no diretório é então traduzido automaticamente para o idioma definido. A habilidade é acionada quando o usuário solicita criar, iniciar, configurar ou 'оформити' (formatar) um novo projeto, garantindo consistência com o layout e as regras globais do usuário armazenadas em ~/.claude/rules/. É suportada em agentes como Claude Code, Cursor e Codex, e seu design modular e baseado em prompt a torna altamente portátil entre plataformas compatíveis com arquivos CLAUDE.md.

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

Installed? Explore more Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação


name: create-project description: Inicializar um novo projeto no layout padrão do usuário — .claude-root, .dir-locals.el (root: abreviação de link org), code/, spcfctn/code/ (com seu próprio repositório git) e um diretório .claude/ com seu próprio repositório git e um CLAUDE.md que define o idioma do projeto e seu código curto de duas letras (escolhido pelo usuário a partir das opções que o agente propõe) — e traduzir quaisquer arquivos já existentes para esse idioma. Use sempre que o usuário pedir para criar, iniciar, configurar, inicializar ou "оформити" um novo projeto (ou para trazer um diretório existente e vazio para o layout padrão).

create-project

Habilidade para criar um novo projeto na estrutura padrão do usuário. Tudo é feito de acordo com as regras globais de ~/.claude/rules/ (principalmente project-meta.md, spcfctn-code.md, org-babel.md, file-editing.md); aqui está apenas a sequência de ações.

A invocação explícita desta habilidade é a permissão para criar spcfctn/ (a regra global "peça ao usuário para criar spcfctn/" não se aplica aqui — o usuário já pediu).

Passo 0 — Preparação

  • A raiz do projeto é o diretório de trabalho atual (ou o diretório nomeado pelo usuário). Verifique o que já existe lá: ls -la, find -L (considere symlinks).
  • Se .claude-root, .claude/CLAUDE.md etc. já existirem — este não é um projeto novo: não sobrescreva nada, apenas complete o que está faltando e informe o que já estava presente.
  • Se spcfctn/ já fizer parte de um repositório compartilhado (monorepo) — não o divida. No relatório, diga isso e sugira uma divisão em subdiretórios preservando o histórico no próximo commit (spcfctn-code.md).
  • Antes de cada solicitação de permissão, forneça um breve resumo em ucraniano (file-editing.md).

Passo 1 — Idioma do projeto

  • Se o usuário não especificou o idioma na solicitação — pergunte via AskUserQuestion ("Em qual idioma o projeto será conduzido?": ucraniano, inglês, outro). Não escreva nenhum texto em prosa até saber o idioma.
  • O idioma do projeto se aplica aos arquivos do repositório (código, comentários, commits, org/md) e aos artefatos externos do projeto (tarefas Jira, páginas Confluence). O idioma do chat com o usuário é separado, sempre ucraniano.

Passo 1a — Código do projeto

Cada projeto tem seu próprio código curto de duas letras. Três letras — apenas em último caso, quando não houver opções aceitáveis de duas letras. A caixa não é fixa: depende do contexto de uso (por exemplo, chave de tarefa Jira — maiúsculas, KB-1676; prefixo em código ou nome — conforme a convenção do local, geralmente minúsculas). Portanto, nas propostas, mostre o código sem vinculação a caixa, e no CLAUDE.md registre na forma de uso principal e indique onde cada forma se aplica.

  • Não invente um código silenciosamente e não pegue o primeiro que vier: proponha explicitamente 3–4 opções interessantes que você mesmo goste (derivadas do nome do projeto, sua essência ou jogo de palavras — com uma breve explicação do porquê) e deixe o usuário escolher uma ou sugerir a própria. É conveniente fazer isso via AskUserQuestion (a primeira opção é a melhor na sua avaliação, marcada como "(Recommended)"; "Other" é adicionado automaticamente para o código próprio do usuário).
  • Verifique se o código escolhido não coincide com códigos de projetos existentes do usuário (pesquise em ~/.claude/projects/*/memory, .claude/CLAUDE.md de projetos vizinhos, se necessário locate); se coincidir, informe e ofereça outras opções.
  • Registre o código em .claude/CLAUDE.md (passo 3) e mencione no relatório final.

Passo 2 — Estrutura

Crie na raiz:

O quêConteúdo
.claude-rootarquivo vazio (marca a raiz do diretório de trabalho compartilhado)
.dir-locals.elformulário abaixo, obrigatoriamente com quebra de linha final
code/diretório vazio (aqui irão sub-repositórios/código)
spcfctn/code/diretório, se ainda não existir (spcfctn/ crie você mesmo, veja acima), e dentro dele um git init separado (ação rotineira, não precisa pedir permissão) e .gitignore com a única linha *~; não faça commit até que o usuário peça. O próprio spcfctn/ não é um repositório
.mcp.jsonvazio: {"mcpServers": {}} (project-meta.md — apenas MCP de escopo project, nunca user)
env.orgfonte literária de .env.example — veja abaixo
.claude/veja passo 3

env.org — uma seção para cada servidor MCP do projeto (* Nome do MCP), descrevendo em prosa quais variáveis são necessárias e para quê; cada seção é tanglada (:noweb-ref) para um .env.example compartilhado (público, mostra apenas os NOMES das variáveis com placeholders, sem valores reais — org-babel.md, o modelo "multi-alvo" não é necessário aqui, o alvo é único). O .env real (com permissões 600, project-meta.md) o usuário configura por conta própria — não crie nem edite; .gitignore para ele na raiz do projeto não é necessário, pois a raiz nunca é um repositório git (project-meta.md). Se no momento da criação do projeto ainda não houver servidores MCP — env.org pode ficar com uma única frase de modelo ("Nenhum MCP conectado ainda") em vez de seções, e retorne quando o primeiro servidor aparecer.

.dir-locals.el (abreviatura root: para links org, portátil, sem caminhos hardcoded):

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

(No arquivo em si, isso é elisp puro — as linhas #+begin_example/#+end_example não entram.)

Se spcfctn/ui/ for necessário (análise de layouts) — será criado depois, conforme a necessidade; não crie diretórios vazios antecipadamente. Cada subdiretório de spcfctn/ que aparecer depois (ui/, deploy/ etc.) recebe imediatamente seu próprio git init e .gitignore com *~ — o próprio spcfctn/ não é um repositório. Não crie diretórios draft/, raw/, data/ até que haja o que colocar neles, e não adicione seus padrões ao .gitignore antecipadamente (project-meta.md).

Passo 3 — .claude/

  1. mkdir .claude e separado git init exatamente em .claude/ (mesmo que a raiz seja um repositório git ou esteja dentro de outro). Esta é uma ação rotineira, não precisa pedir permissão. Não faça commit até que o usuário peça.

  2. .claude/.gitignore:

    settings.local.json
    *~
    

    (*~ — padrão genérico para arquivos de backup do Emacs, incluindo *.~undo-tree~; com quebra de linha final.)

  3. .claude/CLAUDE.md — no idioma do projeto. Mínimo:

    • seção sobre o idioma: toda a prosa do projeto (documentação, comentários de código, mensagens de commit, títulos org etc.) — no idioma do projeto; também artefatos Jira/Confluence; o chat com o usuário permanece em ucraniano;
    • código do projeto (passo 1a) — em linha separada, ex.: "Código do projeto: kb (em chaves de tarefa Jira — KB)";
    • descrição breve da estrutura: .claude-root marca a raiz; code/ — código; spcfctn/code/ — documentação da prática de código existente (git próprio); .claude/ — intenções e convenções do projeto (git próprio).

    Não invente nada adicional (chave Jira, assignee etc.) — isso aparecerá no decorrer do trabalho.

  4. Não escreva nada em settings.local.json — é pessoal e fora do git.

Passo 4 — Raiz não está no git

A raiz do projeto nunca é um repositório git (project-meta.md): não faça git init na raiz e não crie um .gitignore raiz. Se já houver .git na raiz — não mexa e informe o usuário no relatório. Se houver um .mcp.json raiz — não faça nada com ele.

Passo 5 — Tradução de arquivos existentes

Tudo o que estava no projeto antes da criação (exceto arquivos *~, .git, binários e os próprios arquivos de serviço recém-criados) — traduza para o idioma do projeto, se estiver em outro idioma:

  • Escreva o texto com tradução completa, preservando estrutura, tabelas, blocos de código, identificadores e citações (mensagens de erro mantenha no original).
  • Ucraniano: "перелік" em vez de "список" (para list); "зачіпка" para hook; não traduza identificadores e classes CSS (org-babel.md).
  • .md apenas o agente edita; .org — não remova edições incompreensíveis do usuário, pergunte. Para arquivos org com :tangle, edite a fonte org e tangle via emacsclient (org-babel.md).
  • Após editar parágrafos (prosa, não blocos de código nem tabelas), ajuste as quebras de linha com fill-paragraph real via emacsclient --eval (para org — primeiro (font-lock-ensure)); escreva o parágrafo em new_string/Write como uma única linha. Se emacsclient não conectar — peça ao usuário para iniciar o servidor, não simule.
  • Para prosa org/md, após isso, execute a habilidade org-lint.
  • Se parte do conteúdo se referir a arquivos/projetos que não estão aqui — não "corrija" os links, apenas traduza o texto ao redor.

Passo 6 — Relatório

Liste brevemente qual código do projeto foi escolhido, o que foi criado, o que já existia, o que foi traduzido, e lembre: commits em .claude/ e nos subdiretórios de spcfctn/ não foram feitos (faça quando solicitado).

O que não fazer

  • Não edite .env/.env.* (project-meta.md) e não crie .mcp.json com segredos.
  • Não escreva nada nos arquivos CLAUDE.md/.claude/ de sub-repositórios de componentes em code/* — apenas no .claude/ raiz.
  • Não invente regras de idioma pelo usuário — apenas o idioma solicitado.
  • Não atribua um código de projeto sozinho sem propor opções e obter a escolha do usuário.
  • Não faça git init na raiz do projeto nem na raiz de spcfctn/: repositórios apenas em .claude/, em code/* e nos subdiretórios de 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.

Habilidades Relacionadas