AgentStack
SKILL verified MIT Self-run

Mm Init Project

skill-mworldorg-markdown-memory-mm-init-project · by mworldorg

Инициализирует или обновляет проект для mm-системы — создаёт passport.md в корне, копию в Obsidian, dashboard.md, handoff.md (скелет), project-instructions.md для claude.ai. Use when user says "оформи проект", "сделай паспорт", "init project", "/mm-init", "/mm-init-project", "обнови паспорт", "регистрирую проект". Работает на пустой папке (новый проект) и на существующем коде с любыми .md файлами…

No reviews yet
0 installs
13 views
0.0% view→install

Install

$ agentstack add skill-mworldorg-markdown-memory-mm-init-project

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Mm Init Project? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

mm-init-project — Project Bootstrap & Refresh (safe edition)

Создаёт «паспорт» проекта — единый источник контекста для claude.ai Project Knowledge и для всех mm-* skills. Всегда показывает план перед записью, никогда не уничтожает чужие .md файлы.

Контракт безопасности (это важно — соблюдай дословно)

Skill ПИШЕТ только в эти файлы:

  • /passport.md — создаёт или обновляет
  • /CLAUDE.mdтолько добавляет секции ## Obsidian Knowledge Vault и ## mm-system если их нет; никогда не редактирует существующие секции
  • /.gitignore — добавляет правила для игнорирования локальных настроек Obsidian (.vault/.obsidian/)
  • Файлы Obsidian Vault (хранилище в /.vault/ при локальном режиме или // при глобальном режиме):
  • 00-home/index.md — карта всех заметок
  • 00-home/текущие приоритеты.md — текущие приоритеты
  • 00-home/project-instructions.md — инструкции для claude.ai
  • handoff.md — создаёт скелет на старте (в корне хранилища)
  • atlas/passport.md — копия паспорта проекта
  • atlas/архитектура проекта.md — описание архитектуры
  • atlas/база данных.md — схема БД
  • atlas/деплой.md — информация о деплое
  • Создает папки knowledge/integrations/, knowledge/decisions/, knowledge/debugging/, knowledge/patterns/, knowledge/business/, sessions/, inbox/ if they don't exist.

Skill ТОЛЬКО ЧИТАЕТ (никогда не редактирует):

  • README.md, ARCHITECTURE.md, NOTES.md, OVERVIEW.md, CONTEXT.md, DESIGN.md, ROADMAP.md, TODO.md, BUGS.md, DECISIONS.md, и любые другие *.md в проекте
  • package.json, pyproject.toml, requirements.txt, go.mod, Cargo.toml, pom.xml
  • .env.example (не .env!)
  • Dockerfile, docker-compose.yml, railway.json, vercel.json
  • .git/config, git log, git status

Skill НЕ ТРОГАЕТ ВООБЩЕ:

  • .env, *.key, *.pem, secrets/ — даже не читает значения
  • node_modules/, .venv/, dist/, build/, target/
  • Файлы вне `` за исключением Obsidian-папки из конфига

Перед любой записью — обязательная фаза Preview (см. ниже). Без подтверждения y — ничего не пишется.

Конфиг

Загрузи mm-config.json по алгоритму из /docs/CONFIG-LOADING.md. Поддержка mm-config.local.json overlay обязательна. ` берётся из reporoot` инжектированного loader'ом.

Понадобятся:

  • paths.obsidian_projects
  • _repo_root (для templates/passport.md и templates/project-instructions.md)
  • bot_defaults.*
  • default_language

Фаза 0. Определи целевую папку (worktree-aware)

Целевая папка = «корень проекта», не «cwd как есть».

Алгоритм:

  1. Возьми cwd.
  2. Если в пути есть подстрока \.claude\worktrees\ или /.claude/worktrees/ — это worktree. Найди корневой репо:
  • Прочитай /.git (это файл-указатель, не папка). Извлеки gitdir: . Из него выведи main repo path.
  • Если не получилось — спроси: Это git worktree. Какую папку считать корнем проекта? .
  1. Иначе — поднимись от cwd пока не найдёшь .git/ (папку, не файл) или package.json / pyproject.toml / любой явный маркер корня. Если ничего нет — cwd и есть корень.

Имя проекта = basename целевой папки. Покажи: Имя проекта: (целевая папка: ). Ок? (y/n или новое имя).

Фаза 1. Discovery (что уже есть в проекте)

Просканируй и выведи отчёт пользователю перед любыми действиями.

1a. Существующие паспорта (миграция)

Поищи (case-insensitive) в ` и /docs/`:

  • passport.md, PASSPORT.md, Passport.md, passport.MD — варианты case
  • PROJECT_PASSPORT.md, project_passport.md — старая louise-система (Claude Setup/)
  • *_passport.md, passport_*.md

Любой найденный — кандидат на миграцию, не конфликт-блокер.

1b. Документы которые могут содержать контекст

Просканируй *.md в:

  • / (корень)
  • /docs/, /notes/, /_docs/
  • /.planning/ (GSD-документы)

Распознай семантически по имени (case-insensitive substring): | В имени есть | Категория | |---|---| | readme | Описание / overview | | architecture, design, arch | Архитектура | | overview, context, intro | Контекст | | notes, ideas | Заметки | | decisions, adr, rfc | Решения | | roadmap, plan | Планы | | todo, tasks, backlog | Задачи | | bugs, issues, known-issues | Проблемы | | changelog, history | История | | claude (CLAUDE.md, claude-rules.md) | Правила для AI |

Прочитай первые 50 строк каждого найденного файла — для понимания.

1c. Маркеры стека (auto-detection)

Manifest-файлы — прочитай если есть:

  • package.json, pyproject.toml, requirements.txt, go.mod, Cargo.toml, pom.xml, composer.json, Gemfile, mix.exs, pubspec.yaml
  • Dockerfile, docker-compose.yml, railway.json, vercel.json, fly.toml, Procfile
  • .env.example, .env.template (не .env!)
  • tsconfig.json, next.config.*, vite.config.*, astro.config.*, nuxt.config.*, svelte.config.*, remix.config.*
  • .python-version, .nvmrc, .tool-versions, runtime.txt

Auto-detection: пакет → стек (по подстроке в зависимостях):

| Если в зависимостях | Тип | Фреймворк | Категория | |---|---|---|---| | aiogram, python-telegram-bot, telethon, pyrogram, telegraf, grammy | bot | по имени | tg-bot | | discord.py, discord.js, discordeno | bot | по имени | discord-bot | | fastapi, flask, django, starlette, litestar, quart, sanic, bottle, pyramid | web | по имени | python-web | | express, koa, hapi, fastify, nest, polka, hono, elysia | web | по имени | node-web | | next, nuxt, astro, remix, sveltekit, gatsby, solid-start, qwik | web | по имени | meta-framework | | react, vue, svelte, solid-js, preact, lit, htmx | web | по имени | spa-frontend | | gin, echo, fiber, chi, gorilla/mux, huma | web | по имени | go-web | | actix-web, axum, rocket, warp, tide, salvo | web | по имени | rust-web | | rails, sinatra, hanami, roda | web | по имени | ruby-web | | phoenix, plug | web | по имени | elixir-web | | laravel, symfony, slim | web | по имени | php-web | | sqlalchemy, sqlmodel, alembic, tortoise-orm, peewee, pydantic | — | — | python-db | | prisma, drizzle, kysely, typeorm, sequelize, mongoose, mikro-orm | — | — | node-db | | gorm, ent, sqlx, bun, pgx | — | — | go-db | | diesel, sea-orm, sqlx (rust) | — | — | rust-db | | pytest, unittest, nose2, tox | — | тесты Python | testing | | vitest, jest, mocha, playwright, cypress, ava, tap | — | тесты JS | testing | | cargo test (default), nextest | — | тесты Rust | testing | | loguru, structlog, winston, pino, zap, tracing, slog | — | логирование | observability | | pydantic, zod, joi, yup, ajv, valibot, arktype | — | валидация | validation | | openai, anthropic, litellm, langchain, llama-index, instructor | — | — | ai-llm | | huggingface, transformers, torch, tensorflow, jax, keras | — | — | ai-ml | | pandas, polars, numpy, scipy, dask | — | — | data | | dlt, airflow, prefect, dagster, kafka-python, aiokafka | — | — | pipelines | | redis, aioredis, kombu, celery, rq, bullmq | — | — | queue/cache | | scrapy, playwright, puppeteer, selenium, httpx, aiohttp | — | — | scraping/http | | tauri, electron, wails | — | — | desktop |

Файловые маркеры (если manifest неоднозначен):

  • *.tsx / *.jsx → React
  • *.vue → Vue
  • *.svelte → Svelte
  • *.astro → Astro
  • app/page.tsx → Next.js App Router
  • pages/*.tsx → Next.js Pages Router
  • wrangler.toml → Cloudflare Workers
  • serverless.yml → Serverless Framework
  • terraform/, *.tf → Terraform
  • helm/, Chart.yaml → Kubernetes Helm

Combo-recognition (комплекты):

  • React + TypeScript + Tailwind + shadcn → пометить «modern react stack»
  • FastAPI + Pydantic + sqlmodel + pytest → пометить «modern python web»
  • aiogram + sqlmodel + loguru → пометить «default bot stack» (из bot_defaults конфига)
  • Наличие telethon в зависимостях → установить внутренний флаг telethon_project: true
  • Наличие фреймворков категории tg-bot (aiogram, python-telegram-bot, telegraf, grammy и др.) в зависимостях → установить внутренний флаг tg_bot_project: true

Приоритет определения типа (когда несколько матчей):

  1. tg-bot / discord-bot (если есть бот-фреймворк) — bot
  2. meta-framework (Next/Nuxt/Astro/Remix) — web
  3. python-web / node-web / go-web / rust-web — web
  4. spa-frontend без backend — web (frontend-only)
  5. ai-ml / ai-llm + entry point — script или service
  6. data / pipelines — script
  7. desktop — desktop
  8. lib (если в pyproject.toml [project] без entry point ИЛИ в package.json main без bin) — lib
  9. иначе — script

Версии:

  • Питон: из .python-version или pyproject.toml requires-python
  • Node: из .nvmrc, engines.node в package.json
  • Go: из go.mod строка go X.Y
  • Rust: из rust-toolchain.toml или edition в Cargo.toml

1d. Git-контекст

git rev-parse --show-toplevel
git remote -v
git branch --show-current
git log --oneline -10

1e. Системы которые могут конфликтовать (dual-detection GSD)

GSD detection (определи версию):

  • /.planning/ существует:
  • Если /.planning/config.json существует → GSD Core. В passport frontmatter gsd_version: core.
  • Иначе → GSD v1. В passport frontmatter gsd_version: v1.
  • /.gsd/ существует → GSD v2. В passport frontmatter gsd_version: v2.
  • Оба → смешанный (редкость, после миграции). Спроси: какой считать активным?
  • Ни одного → gsd_version: none.

Если GSD есть — попробуй импортировать scope/requirements (чтобы не дублировать):

GSD v1 (.planning/):

  • PROJECT.md → vision, audience, goals → секция 1 (Назначение) + секция 3 (Архитектура краткая)
  • REQUIREMENTS.md → REQ-001..N → можно вытащить топ-5 в секцию 4 как «функциональные требования» (опционально)
  • ROADMAP.md → phases, статусы → секция 9 паспорта строка Текущий milestone / phase: >
  • STATE.md → current phase / position → секция 10 «В работе сейчас»
  • codebase/STACK.md, codebase/ARCHITECTURE.md, codebase/CONVENTIONS.md, codebase/CONCERNS.md → если есть, переносим в секции 2, 3, 7, 10 паспорта (НЕ дублируя — кратко + ссылка см. .planning/codebase/STACK.md)

GSD v2 (.gsd/):

  • gsd.db (SQLite) → если можешь прочитать через sqlite3 CLI/Python — извлеки текущий milestone/slice/task; иначе пропусти
  • STATE.md (rendered dashboard) → парсинг как у v1
  • AGENTS.md → preferences для агентов → ссылка в секции 7 паспорта

Важное правило про дубликацию:

  • Если в .planning/PROJECT.md уже есть подробное описание проекта — в секции 1 паспорта пиши краткое summary + ссылку (см. .planning/PROJECT.md), не копируй целиком.
  • В секции 9 явно укажи source-of-truth: Source-of-truth для scope/requirements: .planning/PROJECT.md. Это нужно чтобы будущий читатель не запутался какой документ актуальный.

Никогда не пиши в .planning/* или .gsd/* напрямую — там file-lock'и, hook'и-охранники GSD. Только читать.

CLAUDE.md → читай, оценивай размер: маленький (/passport.md И /Projects//passport.md`:

  • Сравни sha256 содержимого (или хотя бы mtime + size).
  • Если расходятся — это значит юзер редактировал одну из копий (например в Obsidian app). Покажи в Discovery:

``` ⚠️ Рассинхрон: passport.md в проекте и в Obsidian отличаются. Проект: updated , sha Obsidian: updated , sha

Какую версию считать source-of-truth? [1] Проект (Obsidian перезапишется) — дефолт [2] Obsidian (проект перезапишется) [3] Show diff first [4] Cancel ```

  • Запомни выбор для фазы 4 (write).

1g. Вывод фазы Discovery (покажи пользователю)

🔍 Discovery: 

Целевая папка: 
Git: ,  коммитов, remote: 

Найдено существующих паспортов:
  • PROJECT_PASSPORT.md  ← старая louise-система, можно мигрировать
  • passport.md          ← текущий формат, режим update
  (или: «не найдено»)

Найдено документов с контекстом:
  • README.md (описание)
  • docs/architecture.md (архитектура)
  • NOTES.md (заметки)
  (используются ТОЛЬКО для чтения — не будут изменены)

GSD detection:
  • Версия: 
  • PROJECT.md: 
  • REQUIREMENTS.md: 
  • Текущий milestone: 
  • codebase/: 

Стек определён (auto-detection):
  • Язык: Python 3.12 (из .python-version)
  • Фреймворк: aiogram 3.x (из pyproject.toml)
  • DB: SQLite через sqlmodel
  • Тесты: pytest
  • Логирование: loguru
  • Тип: bot (combo: «default bot stack»)

Существующий CLAUDE.md:  строк, добавлю секцию mm-system / большой — спрошу>

Фаза 2. Решения (если нужны)

Задай только реально неопределённые вопросы (максимум 3-4):

  1. Расположение Obsidian Vault (КРИТИЧНО):

Спроси пользователя, где хранить базу знаний (Obsidian Vault): `` Выберите расположение Obsidian Vault для проекта: [1] Локально в папке проекта (рекомендуется: /.vault/, версионируется в git, синхронизируется с claude.ai автоматически) — дефолт [2] Глобально в папке Obsidian (из конфига: //) ``

  1. Если найден PROJECT_PASSPORT.md или другой кандидат миграции:

Найден старый паспорт . Мигрировать его контент в новый passport.md? (y = мигрировать, переименую старый в .legacy / n = игнорировать)

  1. Если есть passport.md И он явно устарел (mtime старше 30 дней или git log показывает много коммитов после updated):

Просто переходи в режим update без вопроса.

  1. Если CLAUDE.md > 30 строк:

CLAUDE.md существует и непустой ( строк). Добавить правила базы знаний в конец? (y/n)

  1. Если папка пустая (новый проект):
  • Тип: bot / web / lib / script?
  • Язык / фреймворк? (для bot — дефолт aiogram из bot_defaults)
  • Назначение в одном предложении?
  1. Если в выбранной директории Vault уже есть файлы:

В директории базы знаний уже есть файлы. Update (y) / Создать папку с суффиксом -2 (n) / Отмена (c)?

  1. Если есть GSD (.planning/PROJECT.md или .gsd/) и режим init:

Найден . Импортировать описание/scope в секции 1, 3 паспорта (y) / только сослаться, не дублировать (n) / отмена (c)? Дефолт n — паспорт ссылается, не дублирует.

Если пользователь говорит «решай сам» — выбирай разумный дефолт, отмечай в финальном отчёте ``.

Фаза 3. План записи (Preview / Dry-run)

Это обязательная фаза. Без подтверждения — НИЧЕГО не пишется.

Покажи пользователю полный план в формате:

📋 План записи

Расположение Obsidian Vault: )>

СОЗДАМ:
  + /passport.md (новый файл,  секций)
    Источники: README.md, package.json, etc.
  + /00-home/index.md (карта всех заметок)
  + /00-home/текущие приоритеты.md (активные приоритеты)
  + /00-home/project-instructions.md (инструкции для claude.ai)
  + /handoff.md (скелет)
  + /atlas/passport.md (копия паспорта)
  + /atlas/архитектура проекта.md (архитектура)
  + /atlas/база данных.md (схемы БД)
  + /atlas/деплой.md (информация о деплое)
  + /knowledge/integrations/ (папка)
  + /knowledge/decisions/ (папка)
  + /knowledge/debugging/ (папка)
  + /knowledge/patterns/ (папка)
  + /knowledge/business/ (папка)
  + /sessions/ (папка для логов сессий)
  + /inbox/ (папка для входящего)

ИЗМЕНЮ:
  ~ /CLAUDE.md (добавлю правила Obsidian Knowledge Vault, +18 строк)
  
  ~ /.gitignore (добавлю .vault/.obsidian/ в конец, +2 строки)

ПЕРЕИМЕНУЮ:
  → PROJECT_PASSPORT.md → PROJECT_PASSPORT.md.legacy

НЕ ТРОНУ:
  README.md, .planning/*, .env, src/

Continue? (y / n / edit)

edit → дай возможность изменить план: «Не переименовывай PROJECT_PASSPORT» / «Не трогай CLAUDE.md» / «Не создавай dashboard» — пользователь редактирует список через простой dialog, ты применяешь.

n → останови, ничего не пиши.

y → переходи к фазе 4.

Фаза 4. Запись (atomic: всё или ничего)

Делай в этом порядке. Если хоть один шаг падает — откати уже сделанное (удали созданные файлы, восстанови переименованный):

4.1. Сгенерируй текст passport.md в памяти

Возьми шаблон /templates/passport.md. Заполни:

  • Секции 1-7, 9 — из discovery (ст

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.